from module import *把module中的成员全部导到了当前的global namespace,访问起来就比较方便了.当然,python style一般不建议这么做,因为可能引起name conflict. 但还有另外一个问题 - 你以为你修改了某个变量,其实,被from module import *后的那个并没有被更新,非常危险,因为程序有可能还可以正常运行, 只不过结果错了,到了production才被发现就比较惨了. 举个例子: 你定义了一些变量在base模块中: # r…
from module import *的语法在Python 3.X和Python 2.X中的使用稍有区别: 在Python 3.X中,from module import *无法在函数里面使用,而在Python 2.X中,虽然可以使用,但是Python会给警告,原因是,这样用,Python无法在编译期(即函数运行之前)检测出这些导入进来的局部变量.…
python中的module(模块),关于这个概念以及使用时主要有以下几点需要注意: (1)import xx时,会首先将这个xx module中的代码执行一遍(且仅执行一遍): 例如: (2)模块包: (3)通过import可以导入其他模块中的对象(对象包括:函数.全局变量) import module_name #module_name.foo()表示调用module_name中foo函数 import package_name #如果package_name中__init__.py文件中导…
本文绝大部分内容转载至:廖雪峰官方网站 1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 使用模块有什么好处? 最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用…
1.Python2中可以和Python3中关于reload()用法的区别. Python2 中可以直接使用reload(module)重载模块.   Pyhton3中需要使用如下两种方式: 方式(1) >>> from imp >>> imp.reload(module) 方式(2) >>> from imp import reload >>> reload(module) 2.Python中使用import和reload()出现错误…
在python 中导入模块是我们最常用的功能,基本每个.py 文件中都会有 import 或者是 from * import 语句,可是,这两种方法有什么不同,有该怎么用?今天就好好分析一下. 先上定义: 模块导入允许我们将一个个独立的程序功能分别实现然后组合成一个复杂的系统. 主要有以下作用: 代码重用: 我们知道一段代码需要用到两次的时候,我们就需要写一个函数了这是一个道理. 避免变量名冲突: 每个模块都将变量名封装进了自己包含的软件包,这可以避免变量名的冲突,除非使用精确导入. impor…
前两天被一个同事问了一个python的问题: 为什么一个目录里的python文件引用不要另一个兄弟目录的python文件,但是这两个目录的父母录运行时是可以引用到了.当时感觉一直是模块和包的机制问题,回来翻了一下书,发现是引用路径的问题,记录一下. 在python中我们import模块时,系统会在python的引用路径下去查找这个模块文件, 这个引用路径是在编译或者安装的时候指定的,可以在两个地方进行修改: shell的PYTHONPATH环境变量,系统会在这个变量的目录中进行查找. 在pyth…
在Python中,作为默认参数的一定要是不可变对象,如果是可变对象,就会出现问题,稍不注意,就会调入陷阱,尤其是初学者,比如我(┬_┬). 我们来看一个例子. def add(L=[]): L.append(1) return L L = [1, 2, 3] newL = add(L) print(newL) newL = add(newL) print(newL) testL = add() print(testL) testL = add() print(testL) testL = add…
个人学习c++出身,在后面的工作中接触到python,见到一些classmethod的字眼有点疑惑,所以进行一些记录. 都知道的是,c/c++中有着静态成员,静态方法的存在,比如: class A: { static int a; public: static void hello(){printf("Hello, world.\n")} }; int main() { A a; a.hello(); //错误调用 A::hello(); //正确调用 return 0; } 上面就是…
python 中全局变量和局部变量在使用过程中的一个容易出错的地方 什么是全局变量 python中,在函数外部声明的变量可以叫做全局变量. x = 10 def fn1(): pass fn1() 什么是局部变量 python中,在函数内部声明的变量通常情况下称之为局部变量,它的作用域也仅限在函数内部. x = 10 # 全局变量 def fn1() : y = 20 # 局部变量,只能够在函数内部中使用 fn1() # 调用函数 容易出错的一个点 在使用全局变量和局部变量的过程中,有一种情况十…