在官方文档中没有严格的定义来区分BuiltinFuntionType和BuiltinMethodType。
请注意以下代码
import types
In [133]: total_builtins = dir(__builtins__)
In [138]: builtin_functions = [i for i in total_builtins if
isinstance(eval(i),types.BuiltinFunctionType)]
In [139]: builtin_methods = [i for i in total_builtins if
isinstance(eval(i),types.BuiltinMethodType)]
In [140]: builtin_functions == builtin_methods
Out[140]: True
检查他们的类型
In [142]: {type(getattr(__builtins__, name)) for name in builtin_functions}
Out[142]: {builtin_function_or_method}
boolean关键字'或'表示解释器在实现过程中不区分它们 如果那样,为什么不把它们结合起来?
文档中有一个例子解释了built-in methods
内置方法的一个例子是alist.append(),假设alist是一个列表对象。在这种情况下,特殊的只读属性 self 设置为alist表示的对象。3. Data model — Python 3.6.3 documentation
因此内置方法是内置类型的方法,如(list.append
或dict.update
)。
但是,它没有解释__builtins__
。
BuiltinFuntionType和BuiltinMethodType有什么区别?