簡體   English   中英

Python不會警告變量重新聲明

[英]Python does not warn about variable re-declaration

我花了整整一天的時間來追蹤這個錯誤:

for idx, val in enumerate(some_list):
    for idx, otherval in enumerate(another_list): #the idx for the outer loop is overwritten
        #blah blah

來自強類型語言的背景,對此我感到很痛苦。 在強類型語言中,我將得到有關變量重新聲明的錯誤。 我不知道為什么解釋器不對此發出警告,也不解釋其背后的設計決定。 我的意思是,這顯然是一個錯誤,此結構的合法使用可能是什么? 是否有啟用這種檢查的選項? 謝謝。

無法啟用這種檢查。 通常,我建議使用pylint工具,但是pylint (我最喜歡的)似乎沒有注意到這一點,而pychecker也沒有pychecker

至於基本原理:您想允許類似

a = 1
a = 2

好吧那怎么樣

a = ""
a = 1

好吧,這也許也可以。 現在呢

a = 1
for a in range(5):

你看到問題了嗎? 尚不清楚應該是什么錯誤/警告,什么不應該。

(我承認我希望這件事被pychecker類的工具pychecker ,我對此感到有些失望。)

這就是Python的工作方式,您可以自由地重新定義變量。 如果您希望它的行為像靜態類型的語言,那么您只會感到失望。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM