函数中的Globals()范围



我有一个关于python中的globals()的问题

我的示例代码

b=9
def a1():
 'kkk'
a1()
print globals()

我将输出b作为全局

由于B是全球的,我希望我可以在任何地方修改它所以我将代码修改为

b=9
def a1():
 'kkk'
 b=100
a1()
print globals()

仍然是我的globals()b为100。为什么在我的globals()表示全局?

注意:如果我在功能中添加关键字全局b,则将转换为全局。我的问题是,为什么B在globals()将B称为全局时没有在功能中进行修改?

请参阅Python文档以获取更多信息。复制文本,以防URL不起作用

在python中,仅在函数中引用的变量隐含全局。如果将变量分配给该函数正文内的任何地方的值,则假定该变量是本地的,除非明确称为全局。

一开始有些令人惊讶,但片刻的考虑解释了这一点。一方面,要求全局用于分配的变量为意外的副作用提供了一个标准。另一方面,如果所有全球参考都需要全局,则您将一直使用全局。您必须将其声明为全局对内置功能或导入模块的组件的每个引用。这个混乱将击败全球声明在识别副作用的有用性。

函数内部,除非您使用关键字全局,否则它不是修改的全局变量。相反,创建局部变量,并在其不超出范围

之外就会销毁。

,因为您的代码b是A1()中的局部变量,要使用全局变量,您应该首先将其表示为Python,然后使用它,如下:

b=9
def a1():
 'kkk'
 global b
 b=100
a1()
print globals()

相关内容

  • 没有找到相关文章

最新更新