导入模块中全局变量的可见性
在 Python 中,全局变量的作用域是在一个模块内,而不是在所有模块中全局变量。这可能会导致尝试在导入的模块之间共享全局变量的开发人员感到困惑。
问题:
考虑以下场景:您有一个名为“module1”的模块,定义效用函数。这些函数依赖于导入它们的模块中定义的全局变量“a”。导入“module1”并尝试调用其函数会导致“全局名称 'a' 未定义”错误。
解决方案:
有多种方法可以解决解决此问题:
-
在导入模块中设置全局变量:这涉及访问导入模块的全局命名空间并在调用其函数之前设置变量。
-
将全局变量作为参数传递:导入“module1”时,传递全局变量“a”作为模块函数的参数。这允许函数在不修改全局命名空间的情况下访问变量。
-
创建共享模块:如果多个模块需要全局变量,请创建一个单独的模块作为共享模块这些变量的存储库。导入共享模块和需要访问变量的模块。
其他注意事项:
- 避免使用 from module import var 进行全局变量。这会创建一个局部变量,并且在导入的模块中修改全局变量时不会更新全局变量。
- 对于真正的全局变量,请考虑使用内置模块(仅限 Python 3.x)或实现自定义全局变量解决方案。
以上是如何在导入的Python模块之间共享全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!