繁体   English   中英

为什么我能够从 try-catch 外部访问在 Python 中的 try-except 中定义的变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM