在Python中,对这两个东西有明确的规定:

函数function —— A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body.

方法method —— A function which is defined inside a class body. If called as an attribute of an instance of that class, the method will get the instance object as its first argument (which is usually called self).

从定义的角度上看,我们知道函数(function)就相当于一个数学公式,它理论上不与其它东西关系,它只需要相关的参数就可以。所以普通的在module中定义的称谓函数是很有道理的。
那么方法的意思就很明确了,它是与某个对象相互关联的,也就是说它的实现与某个对象有关联关系。这就是方法。虽然它的定义方式和函数是一样的。也就是说,在Class定义的函数就是方法。

从上面的角度看似乎很有道理。

>>> def fun():
pass
>>> type(fun)
<class 'function'> #没有问题

>>> class Cla():
def fun():
pass
@classmethod
def fun1(cls):
pass
@staticmethod
def fun2():
pass

>>> i=Cla()

>>> Cla.fun.__class__
<class 'function'> #为什么还是函数
>>> i.fun.__class__ #这个还像话
<class 'method'>

>>> type(Cla.fun1)
<class 'method'>   #这里又是方法
>>> type(i.fun1)
<class 'method'>    #这里仍然是方法

>>> type(Cla.fun2)
<class 'function'>   #这里却是函数
>>> type(i.fun2)
<class 'function'>    #这里却是函数
事实上,上面的结果是可以解释的:
1,普通方法(老版中直接就是"instancemethod")在module中与在Class中定义的普通函数,从其本身而言是没有什么区别的,他们都是对象函数属性。 之所以会被说在Class中的定义的函数被称为方法,是因为它本来就是面向将来的实例对象的,其实他们就是实例方法,这些方法是与实例相联系的(从实例出发访问该函数会自动赋值)。所以你从Class访问仍然是一个函数
2,类方法("classmethod"),因为类同样是对象,所以如果函数与类进行联系了话(与实例方法一样的模式)那么就能够这么说了!
3,静态方法,虽然定义在内部,并且也较方法,但是却不与任何对象联系,与从类访问方法是一样的,他们仍然是函数。

这样看来上面的定义可以改改了:
函数的定义自然不变。
方法的定义可以是这样的,与某个对象进行绑定使用的函数。注意哦。绑定不是指" . "这个符号,这个符号说实在的只有域名的作用。绑定在这里是指,会默认赋值该绑定的对象。

Python中Function(函数)和method(方法)相关推荐

  1. Python中range函数的使用方法

    Python中range函数的使用方法 更新时间:2022年05月30日 11:38:15   作者:Python编程学习圈 这篇文章主要介绍了Python中range函数的使用方法,文章基于Pyth ...

  2. 技术图文:举例详解Python中 split() 函数的使用方法

    背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...

  3. python中sum函数的使用方法及实例_sum函数的使用方法及实例

    在我很重要的人.QQ相册上看到的英文. BRO有以下两种意思: 1.BRO是brother的简称,意思是兄弟,哥们.是口语中的简称.类似的还有"sister"姐妹的简称为" ...

  4. Python中range()函数的使用方法

    range()函数可以产生一系列的数字.当需要叠加一些数字时,可以用到range()函数. 1 基本语法 range()函数的基本语法如下所示. range(start, stop) 其中,start ...

  5. Python中Function(函数)和methon(方法)

    首先来看他们的定义, 函数function -- A series of statements which returns some value to a caller. It can also be ...

  6. python中function函数的用法_Python中Function(函数)和methon(方法)

    在Python中,对这两个东西有明确的规定: 函数function -- A series of statements which returns some value toa caller. It ...

  7. python中if函数的使用方法_(for i in range) (else) (if)使用方法

    条件语句 Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块. 可以通过下图来简单了解条件语句的执行过程: [图片上传失败...(image-ef7ddf- ...

  8. python中find函数的使用方法_Python教程-String 字符串使用教程

    Python 语言中的String 在Python中,String代指以下特点: 代表Unicode字符的字节数组 用单引号或双引号引起来 无限长度 Python 中 String 字符串定义方式 $ ...

  9. Python中lambda函数的使用方法

    在进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量.但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫匿名函数.该函数就是Python中的Lambda函数,下面 ...

最新文章

  1. python中对象及对象引用--傻傻分不清
  2. linux下的last以及lastb命令
  3. sql中常用的几种连接
  4. python做毕业设计选题_软妹子的毕业设计:用Python制作防盗门系统!
  5. vaex 处理海量数据_Vaex真香!几秒钟就能处理数十亿行数据,比Pandas、Dask更好用...
  6. Lily have a dog
  7. GDALSetProjection使用的一个注意事项
  8. 图画日记怎么画_期末到了,孩子不会复习,可以试试画思维导图的方法
  9. HTML5前端开发实战04-儿童摄影
  10. C++if语句进行分段函数计算
  11. jzoj6374. 【NOIP2019模拟2019.10.04】结界[生与死的境界]
  12. cdh 添加jar包_hive引入jar包--HIVE.AUX.JARS.PATH和hive.aux.jars.path
  13. 基本概念:节点、集群、分片及副本
  14. 电脑一些基础知识(一)
  15. ASUS TUF GAMING B660M PLUS WIFI D4 i5-12600K RX6650XT 黑苹果efi引导文件
  16. 腾讯mars xlog源码解析
  17. python之网络部分
  18. matplotlib.plt.subplot()用法
  19. 韦东山第1期-学习笔记-4
  20. 2014年十大最失意的科技大佬:最差CEO揭晓

热门文章

  1. XCTF-高手进阶区:i-got-id-200
  2. 计算机与新闻业未来发展,计算机学院举办“智创未来,谈思维与职业发展”活动...
  3. python生成器推导式的结果是一个什么类似于对象_python 生成器和推导式
  4. 解决安卓模拟器没有网络的问题,刚开的做RN的我遇见这个问题真很头疼,所以希望看到我这篇文章能够解决。
  5. 三维重建7:Visual SLAM算法笔记
  6. 算法设计之—常用算法之-分支界定法
  7. php 科研,科研之路2
  8. 7月10日任务 添加自定义监控项目、配置邮件告警、测试告警、不发邮件的问题处理...
  9. highlight js 为博客增加代码着色
  10. linux命令之userdel