python - python 中的导入是静态的,有什么解决方案吗?

标签 python

foo.py :

i = 10

def fi():
    global i
    i = 99

酒吧.py :

import foo
from foo import i

print i, foo.i
foo.fi()
print i, foo.i

这是有问题的。为什么 foo.i 改变时 i 没有改变?

最佳答案

Ross 所说的是像这样重构 foo:

_i = 10

def getI():
    return _i

def fi():
    global _i
    _i = 99

然后你会看到它按照你想要的方式工作:

>>> import foo
>>> print foo.getI()
10
>>> foo.fi()
>>> print foo.getI()
99

从某种意义上说,它也“更好”,因为您可以避免导出全局变量,但仍提供对其的读取访问权限。

关于python - python 中的导入是静态的,有什么解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/744325/

相关文章:

python - 如果Python中的函数发生错误,有什么方法可以访问变量的值吗?

python - 使用 SQLAlchemy 进行 Pyramid 异常记录 - 命令未提交

python - 为 C 库创建 Python 绑定(bind)的 SWIG 问题

python - 如何使 Pandas 数据框列标题全部小写?

python - 如何打印列表中的类型

python - 从Python中的yeardatescalendar中提取日期时间信息

python - 将 .csv 文件读入 Python 列表

python - 如何使用 try and except 在 python 中捕获空的用户输入?

python - 如何仅打印 HTML 代码中的数字并对其求和?(Python)

python - Django 模板中 for 循环的控制