可以说我有这3个(小)python文件 -
a.py
myvar = 'a'
Run Code Online (Sandbox Code Playgroud)
b.py
import a
import c
myvar = 'b'
c.pr()
Run Code Online (Sandbox Code Playgroud)
c.py
from a import myvar
def pr():
print myvar
Run Code Online (Sandbox Code Playgroud)
现在,如果我执行,b.py我得到输出
a
Run Code Online (Sandbox Code Playgroud)
但我真的希望输出为
b
Run Code Online (Sandbox Code Playgroud)
所以请告诉我如何重组/修改程序,以便为模块范围 myvar分配不同的值.
在b.py中,您正在设置b.py的myvar.您想要访问myvar的值.所以b.py可能看起来像:
import a
import c
a.myvar = 'b' # belongs to a
myvar = 'something different' # belongs to b
c.pr()
Run Code Online (Sandbox Code Playgroud)
你需要更新c.py,以便它使用a.py的myvar,而不是它自己的本地副本.所以c.py:
import a
def pr():
print a.myvar
Run Code Online (Sandbox Code Playgroud)
为什么?
在你原来的c.py中,当你打电话时from a import myvar,这相当于:
import a
myvar = a.myvar
Run Code Online (Sandbox Code Playgroud)
这会在导入myvar时生成c.py的本地版本.如果这令人困惑,我发现这篇文章关于python变量如何工作非常有用.
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |