Python,不同类型的关键字

标签 python keyword

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

> range = 5
> range
> 5

但是为了

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

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

对于那些刚接触 python 的人来说,是的,这对于 True、False、range、len 等关键字确实有效。 我在大学时为 python 编写了一个编译器,如果我没记错的话,关键字列表中没有它们。

最佳答案

虽然 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

关于Python,不同类型的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31244525/

相关文章:

html - 如何在 HTML 关键字中使用 unicode 字符?

python - 如何用Python获取当前的Linux主题?

python - 在 Python 中保存从 fbprophet 生成的图

python - 实现 "diamond inheritance"的 Pythonic 方式是什么?

python - 在 .csv 文件中多次使用 next()

c++ - 什么是 do(keyword) c++?

java - 如何使用 OpenNLP 从给定文本中提取关键短语?

c# - 为什么 c# 中没有 "is not"关键字?

const volatile 在生产代码中加倍

python - 使用里德所罗门编码器对图像进行编码