python 方法和函数的区别
发布网友
发布时间:2022-03-03 13:44
我来回答
共1个回答
热心网友
时间:2022-03-03 15:14
在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)就相当于一个数学公式,它理论上不与其它东西关系,它只需要相关的参数就可以。所以普通的在mole中定义的称谓函数是很有道理的。
那么方法的意思就很明确了,它是与某个对象相互关联的,也就是说它的实现与某个对象有关联关系。这就是方法。虽然它的定义方式和函数是一样的。也就是说,在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")在mole中与在Class中定义的普通函数,从其本身而言是没有什么区别的,他们都是对象函数属性。 之所以会被说在Class中的定义的函数被称为方法,是因为它本来就是面向将来的实例对象的,其实他们就是实例方法,这些方法是与实例相联系的(从实例出发访问该函数会自动赋值)。所以你从Class访问仍然是一个函数
2,类方法("classmethod"),因为类同样是对象,所以如果函数与类进行联系了话(与实例方法一样的模式)那么就能够这么说了!
3,静态方法,虽然定义在内部,并且也较方法,但是却不与任何对象联系,与从类访问方法是一样的,他们仍然是函数。
这样看来上面的定义可以改改了:
函数的定义自然不变。
方法的定义可以是这样的,与某个对象进行绑定使用的函数。注意哦。绑定不是指" . "这个符号,这个符号说实在的只有域名的作用。绑定在这里是指,会默认赋值该绑定的对象。
python函数与方法的区别总结
最后,调用的方式不同。(1)函数:通过“函数名()”的方式进行调用。(2)方法:通过“对象.方法名”的方式进行调用。
python方法和函数的区别
最大的区别是参数的传递参数,方法是自动传参self,函数是主动传参
方法和函数有什么区别
方法和函数的区别:1)函数是一段代码,通过名字来进行调用。它能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。所有传递给函数的数据都是显式传递的。函数和对象无关。2)方法也是一段代码,也通过名字来进行调用,但它跟一个对象相关联。方法和函数大致上是相同...
python 语句和函数的区别
def本身是一个函数对象。也可以叫它“方法”。属于对象的函数,就是对象的属性。def定义了一个模块的变量,或者说是类的变量。 python 的函数和其他语言的函数有很大区别。它是可以被其他变量覆盖的,如:
函数和方法 为啥c中叫函数 java中叫方法 那c++呢 注意我问的是为什么...
我们要明白一点,C语言的function和Java语言的function是同一个单词,在英文世界里没有人会区别哪个是“方法”哪个是“函数”。所以翻译成“函数”和“方法”的主要原因是因为最初引入这些编程到大陆的翻译人员的习惯。在Python语言中,在类中的函数常叫做“方法”。以此推测,Java万物皆是类,基本每一个...
python类和函数的区别
一、主体不同 1、类:是面向对象程序设计实现信息封装的基础。2、函数:是指一段在一起的、可以做某一件事儿的程序。也叫做子程序、(OOP中)方法。二、特点不同 1、类:是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。2、函数...
Golang 中函数和方法的区别
在接触到go之前,我认为函数和方法只是同一个东西的两个名字而已(在我熟悉的c/c++,python,java中没有明显的区别),但是在golang中者完全是两个不同的东西。官方的解释是,方法是包含了接收者的函数。到底什么意思呢。首先函数的格式是固定的,func+函数名+ 参数 + 返回值(可选) + 函数体...
如何理解并正确使用python中的self
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。虽然你可以给这个参数任何名称,但是 强烈建议 你使用self这个名称——其他名称都是不赞成你使用的。
说出内置函数len和字符串方法count的区别?
text = "Hello, World!"print(len(text)) # 输出:13 count()是字符串的一个方法,用于返回字符串中指定子字符串出现的次数。例如:text = "Hello, World!"print(text.count("l")) # 输出:3 可以看出,二者的主要区别在于len()是Python内置函数,可以用于任何序列类型,而count()是字符串...
Python为什么要self
Python要self的理由Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他...