2015-10-02 33 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:我已经解释过了;关键字是不能用作标识符(变量名称)的保留名称。它们是保留的,否则解析器将无法区分语句和标识符(它们是表达式的一部分)。 –