[英]Why am I able to access a variable that was defined in a try-except in Python from outside the try-catch?
下面是一些 Python 代码的示例:
try:
x = l[4]
except Exception as e:
x = 7
print(x)
我想知道,我可以访问x
的原因是什么? 我认为我需要执行以下操作:
# Define x
x = ''
try:
x = l[4]
except Exception as e:
x = 7
print(x)
但出于某种原因,Python 不需要这样做吗? 这是范围界定的事情吗?
这是一个范围界定的事情,或者更确切地说,缺乏范围。 Python 没有块作用域; 在 Python 中唯一定义新范围的是函数定义。 (理解也是如此,但那是因为它们是使用匿名函数实现的。)
在try
块或except
块中都没有“本地” x
; 两者都与try
语句之前定义的x
相同。
一个例外: e
是一种本地的。 它仍然在与x
相同的范围内,但是一旦try
语句完成以避免引用循环,它就会被取消设置,就像您在语句之后立即编写了del e
一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.