Python是動態類型和強類型,這意味着你不需要申報類型 - 當您綁定對象的名字,他們被扣除。但是類型總是被保留下來,直到你將不同類型的新對象重新綁定到名稱('變量')之後纔會更改。
你所說的'關鍵字'只是內置的實用函數,它返回一個對象,所以int()
返回默認整數('0'),str()
返回空字符串。因此,如果你打電話給myvar = int()
,你的python首先創建一個新的整數對象,然後綁定這個對象來命名myvar
在當前的名字範圍內。稍後,如果您致電print myvar
,它將檢查名稱myvar
的當前範圍,並將此名稱引用的對象傳遞給print
。
現在,如果您由於某種原因想要使用名稱'int'創建一個變量,比如說int = str
,Python允許這樣做。但這並不意味着你改名爲int
的引用(順便說一下,Python不允許修改內置類型),你只是將你在程序中使用的名稱重新綁定到其他對象。因此,如果您稍後調用othervar = int()
,則會創建綁定到othervar
的新空字符串,但這隻會在當前範圍內,因爲它們具有自己的名稱綁定,所以不會更改其他模塊如何使用int()
。下面
看代碼,看看它是如何工作的:
def int_fn():
return int()
def float_fn():
int = float
return int()
現在來看看什麼是返回:
In [26]: int()
Out[26]: 0
In [27]: float()
Out[27]: 0.0
In [28]: int_fn()
Out[28]: 0
In [29]: float_fn()
Out[29]: 0.0
現在關於你的老師說的話。 int()
或str()
確實不是關鍵字,上面的示例顯示它們是任何其他名稱。但是,除非你真的,真的知道自己在做什麼以及你的行爲會產生什麼後果(並且可能很難學習),否則你應該把它們當作'保留字'來對待。
他們爲什麼要成爲關鍵字? –
我認爲你的教師的意圖是教你避免在你的代碼中嵌入陰影。 –
python中沒有關鍵字,只是聲明。 'int'不是一個聲明,它是一個名稱(設計)被默認綁定到int類型。所有名字都可以反彈到其他對象。 –