Python 里面的 函数 和 方法 怎么区分在python里,函数在很多时候就叫方法,比如在类里面定义函数,其实就是类python的函数与方法的方法 。
还有自定义函数,其实也可以称做自定义方法 。
不用太在意称呼,没什么区别 , python的函数与方法你知道别人说方法其实就是函数就行 。反之亦然python
里面python的函数与方法的
函数
和
方法
怎么区分
python方法和函数的区别这只是在 python3 中才有的区分,python2 中全部称为方法 。
最大的区别是参数的传递参数,方法是自动传参self,函数是主动传参
python 方法和函数的区别在Python中,对这两个东西有明确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
【python的函数与方法 python函数与方法的详细】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'?。U饫锶词呛?
type(i.fun2)
class 'function'#这里却是函数
事实上,上面的结果是可以解释的:
1,普通方法(老版中直接就是"instancemethod")在module中与在Class中定义的普通函数,从其本身而言是没有什么区别的,他们都是对象函数属性 。之所以会被说在Class中的定义的函数被称为方法,是因为它本来就是面向将来的实例对象的 , 其实他们就是实例方法,这些方法是与实例相联系的(从实例出发访问该函数会自动赋值) 。所以python的函数与方法你从Class访问仍然是一个函数
2 , 类方法("classmethod"),因为类同样是对象,所以如果函数与类进行联系了话(与实例方法一样的模式)那么就能够这么说了!
3,静态方法,虽然定义在内部,并且也较方法,但是却不与任何对象联系 , 与从类访问方法是一样的,他们仍然是函数 。
这样看来上面的定义可以改改了:
函数的定义自然不变 。
方法的定义可以是这样的,与某个对象进行绑定使用的函数 。注意哦 。绑定不是指" . "这个符号,这个符号说实在的只有域名的作用 。绑定在这里是指,会默认赋值该绑定的对象 。
python基?。耗谥煤⒎椒ā⒆遄址笕?/h2>在写python程序时,常能用到一些函数和方法 , 总结一下,保存起来,方便查询 。
一、内置函数
# abs()获取数字绝对值
推荐阅读
- 设置java底层代码,java怎么设置代码提示
- 硬盘有阵列怎么删除,磁盘阵列删除后数据还在吗?
- 休闲益智竖屏小游戏大全,休闲益智竖屏小游戏大全图片
- 电视编辑英语图画卡怎么做,电视编辑英语图画卡怎么做视频
- 用c语言表示计算分段函数 怎么用c语言计算分段函数
- vb.net播放资源文件中的wma,vbnet filestream
- sap公司的epr系统,sap erp pce
- 我的pc端安卓模拟器用上手柄,我的pc端安卓模拟器用上手柄没反应
- vb.netled效果 vbnet rnd