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