Python,不同类型的关键字

Python, different types of keywords

在python中,可以将某些值赋予python中已经预定义的一些关键字,这与其他语言不同。为什么? 这还不是全部,还有一些。

> range = 5
> range
> 5

但是

> def = 5
  File "<stdin>", line 1
    def = 5
        ^
SyntaxError: invalid syntax

一个可能的假设是 - 具有独特解析规则的懒惰编码器。

对于 python 的新手,是的,这确实适用于 True、False、range、len 等关键字。 我在大学时为 python 编写了一个编译器,如果我没记错的话,关键字列表中没有它们。

关键字'range'是一个函数,你可以创建一些其他的vars以及sum, max...

另一方面,关键字 'def' 需要定义的结构才能创建函数。

def <functionName>(args):

您对关键字和内置函数感到困惑。 def 是关键字,而 rangelen 只是内置函数。任何函数总是可以被覆盖,但关键字不能。

可在 keywords.kwlist 中找到完整的关键字列表。

虽然range只是一个内置函数,但def是一个关键字。 (大多数 IDE 应该用适当的颜色指示差异。)

函数——无论是否内置——都可以重新定义。而且它们不必保留函数,但可以变成整数,例如 range 在您的示例中。但您永远无法重新定义关键字。

如果您愿意,可以使用以下代码行(借用自 here)打印所有 Python 关键字的列表:

import keyword
for keyword in keyword.kwlist:
    print keyword

输出:

and
as
assert
break
class
continue
def
del
elif
else
except
exec
finally
for
from
global
if
import
in
is
lambda
not
or
pass
print
raise
return
try
while
with
yield

而对于 Python 3(注意缺少 print):

False
None
True
and
as
assert
break
class
continue
def
del
elif
else
except
finally
for
from
global
if
import
in
is
lambda
nonlocal
not
or
pass
raise
return
try
while
with
yield

相比之下,内置函数可以在这里找到:https://docs.python.org/2/library/functions.html