当前位置:   article > 正文

Python基础进阶3:函数和方法不是一回事_python函数和方法

python函数和方法

你好,我是kelly,今天分享的是Python的函数与方法的不同点。

对于Python的函数和方法是不一样的,这一点需要注意下。

一、结论

1、不存在隐式传参,所有参数都是显式传递的是函数

2、存在隐式传参的是方法,一般指隐式传递实例或者类。

二、官方定义

看下Python官方说明截图:

解释就是:

1、限定是对于用户自定义类,可能是方法,具体看调用方式。

2、不强调类和实例,只要是用户自定义的是函数。

三、代码说明

  1. from types import FunctionType, MethodType
  2. def f00():
  3. pass
  4. class Test(object):
  5. def f01(self):
  6. pass
  7. @staticmethod
  8. def f02():
  9. pass
  10. @classmethod
  11. def f03(cls):
  12. pass
  13. def main():
  14. print("function/method: {}/{}".format(isinstance(f00, FunctionType), isinstance(f00, MethodType)), )
  15. obj = Test()
  16. print("\n实例调用")
  17. print("f01 function/method: {}/{}".format(isinstance(obj.f01, FunctionType), isinstance(obj.f01, MethodType)))
  18. print("f02 function/method: {}/{}".format(isinstance(obj.f02, FunctionType), isinstance(obj.f02, MethodType)))
  19. print("f03 function/method: {}/{}".format(isinstance(obj.f03, FunctionType), isinstance(obj.f03, MethodType)))
  20. print("\n类调用")
  21. print("f01 function/method: {}/{}".format(isinstance(Test.f01, FunctionType), isinstance(Test.f01, MethodType)))
  22. print("f02 function/method: {}/{}".format(isinstance(Test.f02, FunctionType), isinstance(Test.f02, MethodType)))
  23. print("f03 function/method: {}/{}".format(isinstance(Test.f03, FunctionType), isinstance(Test.f03, MethodType)))

运行结果:

  1. function/method: True/False
  2. 实例调用
  3. f01 function/method: False/True
  4. f02 function/method: True/False
  5. f03 function/method: False/True
  6. 类调用
  7. f01 function/method: True/False
  8. f02 function/method: True/False
  9. f03 function/method: False/True

1、foo明显是函数。

2、对于类Test中的f01,属于属于实例方法,但不用调用方式得到不同结果,当实例调用时,存在隐式传参,为方法;当类调用时,不存在隐式传参,为函数

3、对于类Test中的f02,尽管使用staticmethod标记为静态方法,调用时不存在隐式传参,实际是函数

4、对于类Test中的f03,使用classmethod标记为类方法,调用时存在隐式传参,因此是方法

总结三句话:

1、类中实例方法,可能是方法,也可能是函数。

2、类中类方法,是方法。

3、类中静态方法和其他,是函数。

四、补充:

1)对于类中的实例方法,使用类调用时,必须显式将一个类实例传递进去。

2)对于类中的类方法,使用类调用时,Python解析器自动隐式传参,如下图所示。

好了,今天的分享就到这里。

本文原始版本发表链接:

https://mp.weixin.qq.com/s?__biz=MzI2Mjg3NTY5MQ==&mid=2247484703&idx=1&sn=c5cc8c3acbf9c279395bfc41247d8102&chksm=ea453a5bdd32b34ded1eab873951b5f51713f93699f6aa98203a4054a33bac751af9e66ef94e#rd

kelly会在公众号「kelly学技术」不定期更新文章,感兴趣的朋友可以关注一下,期待与您交流。


--over--

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/595230
推荐阅读
相关标签
  

闽ICP备14008679号