python - 为什么 `function` 不是 Python 中的关键字?

标签 python class built-in

strtype

>>> type("pear")
<class 'str'>
>>> type(str)
<class 'type'>

可在 Python 中访问:

>>> str
<class 'str'>
>>> type
<class 'type'>

但是,类 functionbuiltin_function_or_method 不是。

>>> def foo(): pass
... 
>>> type(foo)
<class 'function'>
>>> type(print)
<class 'builtin_function_or_method'>

它们显示为内置类,但尝试访问它们会抛出名称错误:

>>> function
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined
>>> builtin_function_or_method
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'builtin_function_or_method' is not defined

functionbuiltin_function_or_method 有什么特别之处?

最佳答案

您看到的是 representation函数类型:

>>> from types import FunctionType
>>> repr(FunctionType)
"<class 'function'>"

这是用 def 或其他方式定义的函数的“类型”:

>>> def f():
...     pass
... 
>>> type(f) is FunctionType
True
>>> type(lambda: None) is FunctionType
True

您在表示中看到的字符串来自每个对象的 __name__ 属性:

>>> type(print).__name__
'builtin_function_or_method'
>>> FunctionType.__name__
'function'

“function”本身不是语法,因为输入“def”更容易。

反问句:如果 def 是用于解析函数类型的名称,则 what syntax would you use实际定义一个函数?

关于python - 为什么 `function` 不是 Python 中的关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52122632/

相关文章:

python - 使用 Fortran 读取二进制文件 - 如果没有提供输入列表,Fortran 会跳过多少字节?

如果存在子字符串,python查找并替换列表项

c++ - 类共享资源 - 正确的解决方案?

id(...) 内置函数的 Python 反函数

python - 用自定义类型替换 Pythons 内置类型

python - 如何匹配 'K' , 'M' , 'G' , 'Ki' , 'Mi' , 'Gi' 等但不是单独的 'i' 词缀

python - 如何在 Python 中绘制多面体和 Lemke-Howson 路径?

c++ - 允许访问私有(private)成员

jQuery if 语句将 div 类更改为另一个 not 类

c - 用于在 C 中对数组进行排序的内置函数