如何检查全局变量或局部变量

4
我希望检查该变量是否存在,并在存在时将其打印出来。
x = 10 

def example(): 

z = 5

print("X (Global variable) : ",x) 
print("Z (example() : ",z)

example() 

print(z) 

当我添加print(z)时,显然会引发错误,因为没有名为z的变量。
感谢大家的答案。(特别是Jasper、kevin和icantcode)
x = 10 
def example(): 

z = 5

example() 


try:
    print(z)
except NameError:
    print("There is no global variable called Z! ")

z=5 应该缩进吗?如果是,那么 print("Z (example() : ",z) 将会导致 NameError - Jasper
3
在什么情况下你不知道你定义了哪些变量? - Daniel Roseman
在您的情况下,我认为只需使用print(locals())print(globals())即可提供您所需的有关作用域理解的信息。 - Tadhg McDonald-Jensen
3个回答

7
内置方法locals()globals()返回一个字典,其中包含局部/全局变量的名称和它们的值。
if 'z' in locals():
    print(z)

@bonum77 不是的,这两种情况都有可能。 - Alex Hall

3
最直接的方法是尝试使用它,如果失败了就做其他事情。
try:
    something_with(z)
except NameError:
    fallback_code()

您还可以检查locals()globals()的字典。

if 'z' in locals() or 'z' in globals():
    print(z)
else:
    fallback_code()

0
try:
    print(z)
 except NameError:
    print("No variable named z!")

这段代码尝试打印变量 z,如果没有名为 z 的变量,则会执行 except 下的代码。

1
不要使用裸的except。你需要像except NameError这样的东西。 - Kevin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接