我最近面臨這一問題..Python語言如何知道標識符的類型?
How does python identifies the type of an identifier?
例如
a=5
b=6
c=a+b
c的值是11
凡爲
x="hello"
y="world"
z=x+y
z的值是「 helloworld「
Python如何區分這兩種情況?
我最近面臨這一問題..Python語言如何知道標識符的類型?
How does python identifies the type of an identifier?
例如
a=5
b=6
c=a+b
c的值是11
凡爲
x="hello"
y="world"
z=x+y
z的值是「 helloworld「
Python如何區分這兩種情況?
檢查__add__
方法的類。
真的會發生什麼是對象的__add__
方法被稱爲:
a + b
真的a.__add__(b)
檢查也diveintopython特殊方法名。
從doc:
int類型實現了numbers.Integral抽象基類。
同樣,字符串是str
類的實例。
在Python中,類型不與變量名稱關聯,但與值關聯。名稱'a'不包含任何類型信息,它的值是'1',它保存該信息(即它是'int'類)。
這是C和Java的契約,其中類型與變量名稱相關聯。
這正是咖喱式打字系統和教堂式系統的區別。
http://en.wikipedia.org/wiki/Simply_typed_lambda_calculus#Intrinsic_vs._extrinsic_interpretations
C和Java使用教會打字(變量名有類型),而Python和JavaScript中使用咖喱打字(值都有一個類型)。
它如何知道'1'是int還是char? – user3909208 2014-09-03 18:05:25
becuase 1是一個數字,'1'是一個字符串 - 編譯器根據文本是否出現在引號中來構建正確的對象,當然如果這些字符是有效的數字。當你第一次執行腳本時,你看不到編譯器的運行。 – 2014-09-03 19:17:23
從[數據模型](https://docs.python.org/2/reference/datamodel.html#objects-values-and-types)頁面:每個對象都有一個標識,一個類型和一個值。 – 2014-09-03 07:42:37
您還應該閱讀:[大幅度提高您的Python:瞭解Python的執行模型](http://www.jeffknupp.com/blog/2013/02/14/drastically-improve-your-python-understanding-pythons-execution-模型/) – 2014-09-03 07:49:53