簡體   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