dmd*_*dmd 6 python variables scope
在文件中foo.py我有这个:
d = {}
d['x'] = 0
x = 0
def foo():
global d
global x
d['x'] = 1
x = 1
Run Code Online (Sandbox Code Playgroud)
然后在翻译中:
>>> from foo import *
>>> d['x']
0
>>> x
0
>>> foo()
>>> d['x']
1
>>> x
0
Run Code Online (Sandbox Code Playgroud)
我期待这个:
>>> x
1
Run Code Online (Sandbox Code Playgroud)
我不明白的是什么?
的全局命名空间foo仅导入到当前命名空间一次(当您执行 时from foo import *)。之后,如果您更改 的foo命名空间,它将不会反映在您当前的命名空间中。
请注意,您仍然可以更改 的foo命名空间中的对象并查看当前命名空间中的更改。这就是为什么您会看到d. d您仍然拥有对位于foo的命名空间中的同一对象的引用。
但是,当你设置:
x = 1
Run Code Online (Sandbox Code Playgroud)
这会在 的命名空间中重新绑定foo一个新对象。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |