我是新來的python編程,python的美麗是一切都是對象,但爲什麼沒有關鍵字作爲對象?python中的所有對象,但爲什麼沒有關鍵字作爲對象?
>>> type(for)
File "<stdin>", line 1
type(for)
^
SyntaxError: invalid syntax
我是新來的python編程,python的美麗是一切都是對象,但爲什麼沒有關鍵字作爲對象?python中的所有對象,但爲什麼沒有關鍵字作爲對象?
>>> type(for)
File "<stdin>", line 1
type(for)
^
SyntaxError: invalid syntax
有一些混合消息正在進行。 Mark Pilgrim說Everything is an Object,但即使在所有語言都是對象的情況下,也不是,所有內容都是對象。 ;)
Python允許您通過專門命名的方法對類進行操作符重載。它也有一個operator
模塊。不過說到底,的operator
模塊和特殊操作者類方法兩個構件是功能,因此對象,但裸字(如+
),該Python使用以提供可讀性和語義是根本不總是可解析作爲對象。
這對於關鍵字來說不太正確。有些關鍵字(如if
)根本不歸結爲對象。這也可能是最好的忽略詞一切在深入Python和只記得這句話:
字符串是對象。列表是對象。函數是對象。即使是 模塊也是對象。
操作符和關鍵字不是對象的原因是它們實際上只是語言的語法的一部分,而不是您可以操作的元素。正如phihag所說,你會用一個假設的'for'對象來做什麼?
但是,操作符是對象 - 但是您必須記住,'+'操作符基本上只是語法糖,用於添加函數。當你寫
a + b * c
什麼Python看到(忽略優化)更像
a.__add__(b.__mul__(c))
事實上,我們可以用數字試試這個:
>>> (5).__mul__((3).__add__(10))
65
因此,運營商+ '由(5).__ add__函數表示,這是一個對象。 (我們必須使用括號,因爲數字文字是一種特殊的句法情況。)
它比語法糖多一點點;觀察'(2).__ add __('')'。 – phihag 2012-08-05 21:18:21
關鍵字在Python中不存在。你會得到一個語法錯誤,但如果你沒有,你仍然不能鍵入(關鍵字),因爲關鍵字不存在。
以下面的代碼爲例:
>>> from urllib2 import urlparse as foo
在這裏,我們看到這個詞「是」作爲語法的一部分。這是一個關鍵字。
>>> type(as)
File "<stdin>", line 1
as
^
SyntaxError: invalid syntax
但嘗試使用它作爲一個語法錯誤的對象的結果。
但是在2.4 as
不是保留字。所以有不同的事情:
>>> from urllib2 import urlparse as foo
到目前爲止好。
>>> type(as)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'as' is not defined
在那裏我們看到as
根本不存在。這不是一個對象,因爲它不是什麼。該語言不知道它的存在。這是因爲語言在執行之前無法識別。解析在執行之前完成。因此,語法和關鍵字的解析在「一切」存在之前完成。因此關鍵字不是「一切」的一部分,因此它們不是對象。
您得到的語法錯誤是爲了防止您通過使用關鍵字作爲變量名稱來犯錯誤。不過,在這種情況下,這個錯誤意味着爲什麼關鍵字不是對象:因爲它們不是任何東西。
「一切都是對象」在Python中既不美麗也不真實。 – 2012-08-05 19:31:21
有可能成爲隊長明顯......但也許是因爲他們是關鍵字和運營商,而不是對象? :)爲什麼你想讓他們成爲對象? – favoretti 2012-08-05 19:31:40
*幾乎*一切都有例外。 – 2012-08-05 19:37:13