【发布时间】:2011-07-27 09:05:31
【问题描述】:
我目前正在学习 Python,我必须从事 Python 2.7 项目。
在模块本身的函数中访问“模块范围”变量对我来说有点困惑,我没有成功找到令人满意的方法。
到目前为止我的尝试:
方式一:
my_module.py
my_global_var = None
def my_func():
global my_global_var
my_global_var = 'something_else'
在这里,我认为混淆本地和“模块范围”变量可能很容易。
方式 2:
my_module.py
import my_module
my_global_var = None
def my_func():
my_module.my_global_var = 'something_else'
在这里,“my_module”的名称在必要时不能像“way 1”那样容易更改。另外,将模块导入自身听起来很奇怪。
你会推荐什么?或者你会建议别的吗?谢谢。
【问题讨论】:
-
不要使用
Way 2,使用Way 1。 Python 作用域和赋值很有趣。从名称中读取值时,解释器将始终从最内部的范围向外搜索名称。当您为名称分配值时,它会在当前范围内执行此操作。这意味着如果您在没有global关键字的情况下分配给my_global_var,那么您的模块将具有两个不同的my_global_var,从嵌套范围分配点开始,在嵌套范围之外。全局语句只是告诉解释器将值分配给名称my_global_var的global范围。
标签: python variables module scope coding-style