函数(FunctionType)
函数是封装了一些独立的功能,可以直接调用,能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。可以直接在模块中进行定义使用。
所有传递给函数的数据都是显式传递的。
方法(MethodType)
方法和函数类似,同样封装了独立的功能,但是方法是只能依靠类或者对象来调用的,表示针对性的操作。
方法中的数据self和cls是隐式传递的,即方法的调用者;
方法可以操作类内部的数据
简单的说,函数在python中独立存在,可直接使用的,而方法是必须被别人调用才能实现的。
静态方法除外(与类和对象均无关,通过类名和对象名均可被调用,属函数)
Python的内置函数自成一派,属BuiltinFunctionType
class BuiltinFunctionType:
__self__ = ... # type: Union[object, ModuleType]
__name__ = ... # type: str
__qualname__ = ... # type: str
def __call__(self, *args: Any, **kwargs: Any) -> Any: ...
BuiltinMethodType = BuiltinFunctionType
验证类型的最好办法就是isinstance(), 也可以使用type(),当然实际开发中最好使用前者,效率更高,毕竟一个是方法一个是类;一个针对性更强,一个需要对类型逐一检索匹配