在python中,可以将一些值归因于某些已在python中预定义的关键字,与其他语言不同。为什么? 这不是全部,有些。
> range = 5
> range
> 5
但是
> def = 5
File "<stdin>", line 1
def = 5
^
SyntaxError: invalid syntax
一个可能的假设是 - 具有独特解析规则的懒惰编码器。
对于那些刚接触python的人,是的,这确实适用于关键字,如True,False,range,len等。 我在大学里为python编写了一个编译器,如果我没记错的话,关键字列表中没有它们。
答案 0 :(得分:4)
虽然range
只是一个内置函数,但def
是一个关键字。 (大多数IDE应该用适当的颜色来表示差异。)
功能 - 无论是否内置 - 都可以重新定义。并且他们不必保留功能,但在您的示例中可以成为range
之类的整数。但你永远不能重新定义关键字。
如果您愿意,可以使用以下代码行打印所有Python关键字的列表(从here借用):
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
答案 1 :(得分:1)
关键字&#39;范围&#39;是一个函数,你可以创建一些其他变量以及sum,max ...
另一方面,关键字&#39; def&#39;期望定义的结构以创建函数。
def <functionName>(args):
答案 2 :(得分:1)
您对关键字和内置函数感到困惑。 def
是关键字,但range
和len
只是内置函数。任何函数都可以被覆盖,但关键字不能被覆盖。
完整的关键字列表可在keywords.kwlist
。