|
|
发表于 2020-2-20 13:42:32
|
显示全部楼层
本楼为最佳答案
0.
- x=[1,2,'3','sad']
- print(x,id(x))
- def change():
- x=[2,'asd']
- print(x,id(x))
- change()
- print(x,id(x))
复制代码
运行输出为
- [1, 2, '3', 'sad'] 4360925064
- [2, 'asd'] 4362353992
- [1, 2, '3', 'sad'] 4360925064
复制代码
1.
- x=[1,2,'3','sad']
- print(x,id(x))
- def change():
- # x=[2,'asd']
- x[1]=1
- x[2]='asd'
- x.pop()
- x.pop()
- print(x,id(x))
- change()
- print(x,id(x))
复制代码
运行结果为
- [1, 2, '3', 'sad'] 4555120520
- [1, 1] 4555120520
- [1, 1] 4555120520
复制代码
2.
我个人猜测的结论:当你用定义的方式在子函数中用列表,子函数会创建一个临时列表;当你在子函数只是对列表中的某个部分操作并不涉及定义的话,那么列表就在子函数中默认视为全局。因为整数,浮点数,字符串的定义以及赋值操作在python里是一样的,所以 在python里要额外声明这些变量是不是全局的。 |
|