以這些例子為例:
>>> raise(BaseException())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
BaseException
>>> raise BaseException()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
BaseException
回想一下這句格言:
應該有一種——最好只有一種——明顯的方法來做到這一點。
如果raise是關鍵字,為什么在語法上允許將其視為像函式一樣被呼叫?
還有一些其他關鍵字允許附加括號。是不是很混亂?
uj5u.com熱心網友回復:
將括號括起來只會使它成為括號中的值;它并沒有神奇地使它成為一個函式呼叫。
1與 相同(1),因此return 1與 相同return (1)。
但這不是函式呼叫。
uj5u.com熱心網友回復:
您可以在任何運算式周圍添加括號,只是函式呼叫需要括號。
print 123 # error
print(123) # ok
print((123)) # extra parentheses ok
和
raise BaseException() # ok
raise (BaseException()) # extra parentheses ok
uj5u.com熱心網友回復:
使用裸括號不會對元素產生任何影響。
因此,帶括號和不帶括號沒有區別:
>>> (BaseException())
BaseException()
>>> BaseException()
BaseException()
>>>
只有當你添加一個逗號才會使它成為一個元組。
簡而言之:
raise 是關鍵詞!
uj5u.com熱心網友回復:
它不會作為函式呼叫,您只需在例外物件周圍加上額外的括號即可。考慮:
ex = (BaseException())
raise ex
此外,您的第二個示例提供了反駁。如果raise不是關鍵字,則該示例將失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/385920.html
