想利用模块传递某个变量,修改某个变量的值,且在其它模块中也可见
import base
def hello():
print ‘scope base‘, base.value, id(base.value)
from base import value
from b import hello
print ‘scope base‘, value, id(value)
value = 20
print ‘scope local‘, value, id(value)
hello()
[‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘hello‘, ‘value‘]
scope base 10 140195531889072
[‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘hello‘, ‘value‘]
scope local 20 140195531888832
scope base 10 140195531889072
value 的值并没有被修改,并且id值(对象的内存地址) 不一致,因此我们得出结论, value 和 base.value 存在在不同位置,是两个不同的对象。
每个模块有一个自己的符号表,当我们引入一个模块时,这个符号表中的内容就会被修改,使用dir() 可以查看当前模块的符号表中的符号列表