BBB.py
a = 0
b = {
"c" : a
}
AAA.py
import BBB
BBB.a = 6
print(BBB.b)
输出:
{'c': 0}
为什么打印结果却还是初始值?
因为a是个int类型,是不可变值类型
所以在b中获取到的值是a的值,而不是a这个对象的地址
如果你希望a的值可以随时变,b也跟着变
那么把a定义成
a=[0]
当你调用BBB.a[0] = 6时b也会变
但是不要这样赋值BBB.a=[6],这样会让a的地址指向一个新的地址,b里的list跟a不再是同一个list
-=-=-=-=-=
因为python是纯面向对象的编程语言,一切皆对象,所以它的类型叫法也比较奇怪,分可变值类型和不可变值类型
其实就是对应java里的引用类型和值类型
值类型传递的是值,引用类型传递的是地址(类似c语言的指针效果)
这个可以走debug模式打断点走一下就看出来了,在导入BBB的时候,会定义一次a和b, 但是没有重新定义b,所以b还是{"c": 0}