2015-10-02 36 views
3

我不認爲它們是功能,我不能使用type(return)來得到答案(它會引發錯誤)。`return`或`del`的類型是什麼?

他們叫什麼?我可以定義類似的東西嗎?

+0

[del](https://docs.python.org/2/reference/simple_stmts.html#grammar-token-del_stmt)和[return](https://docs.python.org/2/reference/ simple_stmts.html#the-return-statement)? –

+0

是的,就像Martijn說的,現在我知道他們叫_statements_。 :) –

回答

6

returndel陳述。它們不是對象,所以它們沒有類型。語句形成語言的語法,對象形成語法操作的數據模型。

查看Simple Statements reference page的文檔。還有Compound Statements;包含更多語句組的語句。

因爲delreturn都是語句,所以它們的名字也是reserved keywords,這意味着你不能使用它們來創建標識符。陳述中使用的所有單詞都是關鍵字*,但並非所有關鍵字都是(部分)語句。你不能在Python自己定義你自己的語句,你必須自己擴展語言實現(所以擴展Python語法,標記器,解析器,AST模型和解釋器)。


*與當前的例外是的話async and await這是暫時不協同程序,以幫助過渡現有代碼到Python 3.5的外關鍵字;現在使它們成爲關鍵字可能會破壞太多現有的代碼,但仍然不會使用協程。見PEP 492 transition plan;該計劃是使其在Python 3.7中成爲關鍵字。

+0

_statements_?讓我看看文檔:) –

+0

那麼,_statements_和_keywords_有什麼區別? –

+1

@KevinGuan:我已經解釋過了;關鍵字是不能用作標識符(變量名稱)的保留名稱。它們是保留的,否則解析器將無法區分語句和標識符(它們是表達式的一部分)。 –