补充

函数:function,功能,代码包
方法:method,类函数 class function,generic function 泛函数,对象与生俱来的函数
另看到一篇文章的标题是《Excel200多个宏代码集,比函数强多了!有效提高工作效率!》,这里的函数是内置函数,经历了应用的洗礼和算法的优化的常用功能的代码包。而宏代码集是宏所用的解释器的支持下的自定义代码包,宏的名称就相当于自定义函数的代码名。

之前

《Python学习手册第五版上册》P216

方法是与特定对象相关联,并作用于特定对象的简单函数。
从技术的角度讲,他们是附属于对象的属性,而这些属性碰巧引用了可调用函数罢了,这些函数总是拥有一个隐含的主体(self)。
从更精细的角度看,函数就是代码包,而方法调用同时结合了两种操作:一次属性获取和一次函数调用。

方法是类内置的函数,与类相关联,无法单独调用,调用时通常都引用了类的一些属性
方法和函数都是人对其定义的概念,用于人对其功能的区分,并不会真的对使用有什么影响
类内置的方法必定要与类相关联,不然调用时会报错

type(str.__add__)
Out[1]: wrapper_descriptor # 封装_描述符type(str.find)
Out[2]: method_descriptor # 方法_描述符type('abc'.find)
Out[3]: builtin_function_or_method # 内置函数或方法class Foo(object):def __init__(self):self.name="haiyan"def func(self):print(self.name)def f(): # 错误演示,下面会有报错passtype(Foo) # 类
Out[28]: typef=Foo()type(f) # 类Foo的一个对象
Out[30]: __main__.Footype(Foo.f) # 当用类去描述时,这叫做函数
Out[14]: functionFoo.func()
TypeError: func() missing 1 required positional argument: 'self'Foo.func(self)
NameError: name 'self' is not defined
# 以上正确定义的类内的方法,无法被类调用,其实类本身就不是这么用的,他就是要实现其他类以及该类的对象的Foo.f()
# 但这个错误定义的函数却可以使用,但也仅能这样使用type(f.f) # 当用对象去
Out[15]: methodf.name # 属性(对象,元素)
Out[31]: 'haiyan'Foo.func # 来自于类的方法
Out[35]: <function __main__.Foo.func(self)>f.func
Out[34]: <bound method Foo.func of <__main__.Foo object at 0x000001DFD280EAF0>>
# 绑定方法于类的函数,类的对象某某某hex(id(f))
Out[37]: '0x1dfd280eaf0' # 应对上述对象的地址f.func() # 运行方法
haiyanf.f()
TypeError: f() takes 0 positional arguments but 1 was given
# 报错,原因是类中定义函数时,需要有一个参数self

总之,方法和函数的称谓只是方便我们使用,实际与运行为准

常规情况下,类内定义的函数需要增加self的参数,只能对象来调用它,而对于对象来说,他就是方法
非常规情况下,类内不使用self参数的函数可以用类直接调用,而对象无法调用它,会报错,他是仅能由类所调用的一个函数,实际应用可能会运算和现实与该类相关的运行环境等

class Foo(object):name='hi'def __init__(self):self.name="haiyan"def func(self):print(self.name)def f():print(Foo.name)Foo.name
Out[46]: 'hi'Foo.f
Out[47]: <function __main__.Foo.f()>Foo.f()
hi

对象无法调用.f,因为对象自带.self属性/参数,这与.f的参数不符,总之带self参数的,类无法调用它,对象专用。不带self参数的,对象不能调用,类可以调用。
方法只是对对象而言,而对类而言,这些函数都是类的一个属性。能被对象调用的类的函数,对类的对象而言,就是方法,而不带self的类的函数,可以当作类自身的调试用功能,而与类的对象无关。

Python方法与函数的区别相关推荐

  1. Scala方法定义,方法和函数的区别,将方法转换成函数

    1. 定义方法和函数 1.1. 定义方法 方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型 1.2. 定义函数 1.3.方法和函数的区别 在函数式编程语言中,函数是 ...

  2. python方法和函数的格式是完全一样的_【python基础语法】常用内置函数、关键字、方法和之间的区别(小结)...

    '''关键字: False:bool数据类型 True:bool数据类型 None:表示数据的内容为空 and:逻辑运算符:与 or:逻辑运算符:或 not:逻辑运算符:非 in:身份运算符,判断变量 ...

  3. Python 返回值、方法和函数的区别

    1.返回值详解 -------------------------------------------------------------------------------------------- ...

  4. python 类和函数的区别

    python中,在类中可以定义函数,类和函数都可作为一个模块保存. python的类和函数的区别主要在于类可以有变量和各种方法,而函数没有. 函数只能被运行,返回或者不返回值都可以. 模块如果没有把类 ...

  5. 类,对象,方法与函数的区别

    面向对象(Object oriented Programming,OOP)编程 的思想主要是针对大型软件设计而来的.面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的 ...

  6. python中的方法和函数的区别_python中函数与方法的区别?

    Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...

  7. python中的方法和函数的区别_Python中函数和方法的区别

    在Python中函数和方法是有区别的. 区别一所处的位置:函数是直接写文件中而不是class中,方法是只能写在class中. 区别二定义的方式: 1.函数定义的方式 def关键字  然后接函数名 再是 ...

  8. python方法和函数的格式是完全一样的_Python成为专业人士笔记-返回变量形式函数- str() 和 repr()...

    "专业人士笔记"系列目录:创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com 有两个函数可用于获取对象的可读表示 ,常用于打 ...

  9. python数组和函数的区别_真假美猴王-Numpy数据与Python数组的区别与联系!

    Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional a ...

最新文章

  1. Java项目:家庭理财系统(java+SSM+JSP+Tomcat8+Mysql)
  2. Flutter开发之诊断布局调试工具:inspector(12)
  3. 科大星云诗社动态20220112
  4. golang安装:GOPATH环境变量无需配置说明(>1.13)
  5. 四十九、微信小程序开发页面样式WXSS和页面交互JS
  6. ORA-28000: the account is locked-的解决办法
  7. java 中的 Scanner
  8. IO多路复用中select、poll、epoll之间的区别
  9. spring获取webapplicationcontext,applicationcontext几
  10. 苹果紧急修复已遭利用的两个0day
  11. 计算机桌面美化软件,电脑桌面软件哪个好 桌面美化管理软件推荐
  12. 来聊聊我的阿里云P7面试经历
  13. 计算机与科学技术会学机械,计算机科学与技术和机械设计制造及其自动化的区别...
  14. TestCenter测试管理工具功能详解(E)
  15. 9.29 正睿提高6
  16. 用Win10中自带的CHKDSK来扫描和修复硬盘
  17. Vdbench:解决多台服务器联机运行时,出现的常见问题记录2
  18. 佳能Canon PIXMA MG6320 一体机驱动
  19. 视频教程-Python+Vue+Django前后端分离项目实战-Python
  20. java利用poi生成pptx格式的ppt

热门文章

  1. 神舟测试软件,神舟战神K650D常规性能软件测试_神舟笔记本电脑_笔记本评测-中关村在线...
  2. H3C 关于安全域的一个理解
  3. 支付宝小程序技术架构全解析
  4. java处理全角半角字符问题
  5. 2022 第七届数维杯大学生数学建模挑战赛题目思路
  6. ShadowSSdt HOOK
  7. 美油管运营商被勒索事件
  8. 用python编写三角波_Python中三角波的Fourier变换
  9. 【H5】iphone/ipad 滚动不流畅问题解决
  10. 如何避免NOPI 从Execl里面单元格取日期时出现日期反转