当前位置:  开发笔记 > 编程语言 > 正文

Python - 全球有什么优先权?

如何解决《Python-全球有什么优先权?》经验,为你挑选了1个好方法。

对于使用其他软件包的软件包,我对全局变量有点困惑.从快速谷歌搜索; 没有多少解释.

简单地说:使用时,变量"全球化"的级别是global多少?它是在模块级别,包级别还是解释器级别?即,在这样的设置中:


   |- __init__.py
   |- Module.py
   |- Module2.py

global在Module.py中使用了一个语句,是仅为该模块或整个包(包括Module2.py和或__init__.py)或者在interperter级别(对于在解释器中运行的任何内容)进行全局化的变量.

另外,如果在__init__.py I中from .Module import *,包含全局语句的导入函数是否"正确地全局化"该文件的任何所述变量?



1> user2357112 ..:

全局变量的全局性如何?

Python中所谓的"全局"变量实际上是模块级的.实际上有全局全局变量,它们存在于__builtin__Python 2或builtinsPython 3 中的模块中,但你不应该触及它们.(另外,注意存在或缺少s.__builtins__是它自己奇怪的事情.)

global声明的作用是什么?

global语句意味着,对于它出现的函数,指定的变量名称引用"全局"(模块级)变量而不是局部变量.

怎么样import *

天哪,不要这样做.全局足够糟糕,但导入它们更糟糕,并且这样做import *只是最糟糕的方式.导入系统对全局变量的作用对于新程序员来说是非常令人惊讶的,而且几乎不是你想要的.

当你这样做时import *,这并不意味着你的模块开始在导入模块的全局变量中查找变量查找.这意味着Python在导入的模块中查找,找到其"公共"全局变量*,并将其当前值分配给当前模块中具有相同名称的新全局变量.

这意味着对新全局变量的任何分配都不会影响原件,并且对原件的任何分配都不会影响您的新变量.您导入的任何功能import *仍在查看原始变量,因此他们不会看到您对副本所做的更改,也不会看到他们对他们所做的更改.结果令人困惑.

说真的,如果你绝对必须使用另一个模块的全局变量,请用import othermodule语法导入它并访问全局变量othermodule.whatever_global.


*如果模块定义了一个__all__列表,那么"public"全局变量是名称出现在该列表中的变量.否则,它们是名称不以下划线开头的变量.def因素函数存储在普通变量中,因此它们包含在与其他变量相同的条件下.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有