导入模块中的全局var访问?

我有一个主模块dostuff.py和另一个模块Utility.py.在
dostuff.py我打电话
导入实用程序
然后,我还开始初始化一些全局变量
name =""
然后我创建一个类,一些方法等.在我分配的一种方法中
我的变量name的值.然后我从内部调用功能
我的Utility.py文件:
实用程序.
在我的UTISTIOL.PY文件中,我定义MakeOne函数.但是我要
在实用程序中使用相同的全局变量" sname"
表明我正在通过声明使用全局" sname":
全局sn
但是,当我使用变量时,它仍然给我一个错误:
名称:未定义的全局名称" name"
我认为也许我需要在主模块中指出"全球性",所以
在dostuff.py中初始估算sname之前,我添加了:
全局sn
但这对我没有帮助.我以前有这个问题,并通过
在subodule utility.py中声明变量全局
需要使用前缀在我的主模块中引用它:
Utility.sname =""
它是更多的详细信息,在子模块中定义全球群似乎落后.
但是,如果我需要在另一个导入的模块中访问" sname"该怎么办?
说" otherstuff.py"?我会在我的主机上做我的"进口"电话
模块,但我必须将"导入实用程序"放入
otherstuff.py文件?
有什么方法可以在主模块中定义全球范围,并拥有它们
我所有进口的子模块都可以访问吗?
如您所见,我有点不确定
多模块环境.任何建议都赞赏.我读过http://docs.python.org/ref/naming.html,但它并没有启发我
这个.

# 回答1


RGEEK写道:
试图从软件包"实用程序"中导入一个名为" PY"的模块.
python中的"全局"指令用于 *内部 *函数或方法
指出给定名称不是本地的.
Python没有"范围范围的全局"变量;如果需要,
创建一个支持模块和导入该模块所需的任何地方
访问这些变量:
#文件:globalvars.py
name =""
#文件:myProgram.py
导入全球体
打印globalvars.sname
等等
# 回答2


弗雷德里克·伦德(Fredrik Lundh)写道:
试图从软件包"实用程序"中导入一个名为" PY"的模块.
糟糕 - 那只是我帖子中的错别字 - 我当然是"进口实用程序"
这是新闻 - 谢谢,我没有意识到不是
全球范围的概念.支持模块的想法听起来像
前进的道路.
-r.
# 回答3


弗雷德里克·伦德(Fredrik Lundh)写道:
试图从软件包"实用程序"中导入一个名为" PY"的模块.
糟糕 - 那只是我帖子中的错别字 - 我当然是"进口实用程序"
这是新闻 - 谢谢,我没有意识到不是
全球范围的概念.支持模块的想法听起来像
前进的道路.
-r.
# 回答4


丹尼斯·李·比伯(Dennis Lee Bieber)写道:
我希望不要...进口实用程序
Python没有 具有全球变量.名称属于模块
(或在模块中定义的功能).
全局语句仅在函数(DEF块)中使用
指出指定名称的"写入"是修改模块
名称的级别版本,否则写入将修改函数本地的函数
名称的版本(您不需要全局才能阅读
名称,首先搜索名称的搜索,然后出现在
模块)
如果您真的需要"全球",那么常见的解决方案是创建一个
诸如" myglobals"之类的模块,定义其中的所有共享名称
模块,并在需要访问其中一个的任何地方导入该模块
名称.是的,您将需要使用模块限定所有这些名称
名称(尽管您可以做类似的事情:
导入iglobals作为mg
然后使用
Mg.Somename
代替
myglobals.somename)
谢谢回复.很高兴看到该方法有广泛的支持:)
我会去做的.我喜欢一个很好的简短别名的想法
保持资格简短.
罗斯.

标签: python

添加新评论