在本地环境中访问全局变量

摩ath婆婆

考虑以下代码:

Var='global'
def func():
     Var='local'
     #global Var
     print Var

我试图打印全局变量,即使我有一个具有相同名称的局部变量。但是,当我使用关键字global时,它给了我一个错误。

有没有办法做到这一点?

我也希望解释为什么global会出错。

Снаđошƒаӽ

使用globals()内置功能。从文档globals()

返回表示当前全局符号表的字典。这始终是当前模块的字典(在函数或方法内部,这是定义它的模块,而不是从中调用它的模块)。

Var='global'

def func():
    Var='local'
    print(globals()['Var'])

回复您的评论:

首先尝试:

Var='global'

def func():
    Var='local'
    global Var
    Var = 'Global'
    print(Var)
func()

print(Var)

惊讶吗 此处发生的是,Python假定在函数内分配给该函数的任何变量名称都是该函数的局部变量,除非另有明确说明。如果仅从名称读取,并且该名称在本地不存在,它将尝试在任何包含的范围(例如,模块的全局范围)中查找该名称。在您的情况下,存在一个Var与global相同名称的局部变量Var,因此全局变量被遮盖了。由于Var本地存在,因此不需要在任何包含范围中查找它,因此使用了局部变量。但是,当您更改Var(usingglobal Var语句)的值时,Python使用全局变量,可以通过打印来查看global Var在全球范围内。实际上,实际上,该global关键字用于从任何局部子作用域修改全局变量。这里希望清楚!

PS:我从Jeff Shannon的答案中收集了知识

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

声明全局变量并在本地访问

来自分类Dev

如何在Roslyn脚本环境中访问和编辑全局变量?

来自分类Dev

在Swift中访问全局变量

来自分类Dev

如何访问模板中的全局变量?

来自分类Dev

汇编:访问{{parseJSON}}中的全局变量

来自分类Dev

访问lua中的全局变量

来自分类Dev

汇编:访问{{parseJSON}}中的全局变量

来自分类Dev

在shell脚本中不扩展环境/全局变量

来自分类Dev

在ember-cli环境中如何定义全局变量?

来自分类Dev

函数访问全局变量

来自分类Dev

如何访问全局变量

来自分类Dev

从模块访问全局变量?

来自分类Dev

在JavaScript中制作全局变量的本地副本

来自分类Dev

无论如何要更改函数中全局变量的值并在js中的本地范围之外访问

来自分类Dev

在Android中访问菜单XML文件中的全局变量

来自分类Dev

在CSharpScript中的脚本化类中访问全局变量

来自分类Dev

在Android中访问菜单XML文件中的全局变量

来自分类Dev

如何在Python中访问全局变量?

来自分类Dev

Tcl线程:如何访问线程中的全局变量

来自分类Dev

如何从Node中的required()文件访问全局变量?

来自分类Dev

如何动态访问Node中的全局变量?

来自分类Dev

如何在r函数中访问全局变量

来自分类Dev

AngularJS:在html模板中访问全局变量

来自分类Dev

如何在子程序中访问全局变量

来自分类Dev

在模板中访问jinja2全局变量

来自分类Dev

如何在Kivy文件中访问全局变量?

来自分类Dev

在.m文件中作为全局变量访问结构

来自分类Dev

在Laravel应用程序中访问全局变量的问题

来自分类Dev

在飞镖/颤振中访问全局变量