模块
一个模块不但包含语句,还包含函数的定义。这些语句是用来初始化模块的。当模块第一次被载入的时候被执行。每个模块有自己的命名空间,这些命名空间可以作为函数的全局命名空间使用。因此用户可以使用全局变量,而不必担心使用用户其他全局变量的意外冲突。另一方面,如果你明确做这件事情的后果,你可以通过引用其他模块那样引用模块的全局变量。
模块可以导入其他模块,通常来说模块导入语句import放在模块的开始部分。被导入的部分是模块的全局成员。
也可以直接导入模块的某个或者某些成员。
>>> from fibo import fib, fib2
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
这里并没有引入模块的名称,所以例子中的bibo并没有被定义。
也可以导入模块的所有部分。
>>> from fibo import *
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377
导入了模块中所有不以“_”开头的成员。
global
globvar = 0
def set_globvar_to_one():
global globvar # Needed to modify global copy of globvar
globvar = 1
def print_globvar():
print globvar # No need for global declaration to read value of globvar
set_globvar_to_one()
print_globvar() # Prints 1
当函数中需要修改全局变量的时候一定要使用global声明这个变量是全局变量。不然“a=1”这样的修改全局变量的方法会让python的解释器误认为是重新声明并初始化了一个变量。
但读取全局变量的时候就不用global去修饰了。