(1)使用import
module1:
a = True
module2:
import module1
def test():
module1.a = False
main:
import module1, module2
test()
print(module1.a) # False
- 起先,module1中的变量a指向True
- 在模块2中,使用import module1导入,实际上是在module22中重新创建了一个变量叫module1,module1指向module1模块,module1.a 指向module1模块中的变量a,同理在主程序代码中依然如此。
让 module1.a=False,表示将module1模块中的变量a的指向修改为False,即module1.a = False - 此时module1.a依然指向module1模块中的变量a,而此时a在module2中已经被指向False。
所以最终打印出来a的值为False。
(2)使用from
module1:
a = True
module2:
from module1 import a
def test():
global a
a = False
main:
from module1 import a
from module2 import test
test()
print(a) # True
from module1 import a 实际上在module2中定义了一个新变量a,a指向True这个值,而不是指向module1这个模块。
此时即使使用了global修饰了a,a = False,修改的也只是

本文探讨了Python中使用`import`和`from...import`导入模块时共享数据的区别。在`import`方式下,模块变量可被修改,而在`from...import`方式下,直接修改导入的变量不会影响原始模块。对于可变类型如列表,即使使用`from...import`,也能通过方法操作共享数据。推荐在多模块开发中使用`import`并通过模块名访问变量。
最低0.47元/天 解锁文章
2085

被折叠的 条评论
为什么被折叠?



