下面是一個例子: 在Python中,你可以在不聲明x的類型的情況下鍵入:x = 1或x ='hello',但是在Java中,你不能這樣做,必須首先聲明x的類型。Python與Java相比如何進行類型檢查?
所以我的問題是爲什麼Python允許這種行爲,與Java相比,Python如何進行類型檢查? (在我的想法中,在Python中,x只是一個標籤,它可以指向任何東西。任何人都可以給我一些關於x進行賦值操作時的機制的提示)
下面是一個例子: 在Python中,你可以在不聲明x的類型的情況下鍵入:x = 1或x ='hello',但是在Java中,你不能這樣做,必須首先聲明x的類型。Python與Java相比如何進行類型檢查?
所以我的問題是爲什麼Python允許這種行爲,與Java相比,Python如何進行類型檢查? (在我的想法中,在Python中,x只是一個標籤,它可以指向任何東西。任何人都可以給我一些關於x進行賦值操作時的機制的提示)
Python沒有Java那樣的靜態類型檢查。相反,Python使用動態類型以及duck-typing和it's easier to ask for forgiveness than permission的常用方法。但是,您可以手動使用isinstance()
檢查對象的類型(其中有些人認爲變差,但我不同意):
>>> x = 1
>>> x.__class__
<type 'int'>
>>> isinstance(x, int)
True
>>> isinstance(x, str)
False
>>> x = 'hello'
>>> x.__class__
<type 'str'>
>>> isinstance(x, int)
False
>>> isinstance(x, str)
True
參見:
http://en.wikipedia.org/wiki/Type_system – NullUserException
我也喜歡這個:https://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20lang uage%20and%20also%20a%20strongly%20typed%20language –
你是對的,'x'只是一個標籤。你想知道什麼?你在問關於內部實現的細節嗎? – BrenBarn