美文网首页python
python中函数和方法的区别

python中函数和方法的区别

作者: 小白兔胡萝卜 | 来源:发表于2021-08-10 11:43 被阅读0次

简单总结:

与类和实例无绑定关系的function都属于函数(function);

与类和实例有绑定关系的function都属于方法(method)。

首先摒弃错误认知:并不是类中的调用都叫方法

函数(FunctionType)

函数是封装了一些独立的功能,可以直接调用,能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。可以直接在模块中进行定义使用。 所有传递给函数的数据都是显式传递的。

方法(MethodType)

方法和函数类似,同样封装了独立的功能,但是方法是只能依靠类或者对象来调用的,表示针对性的操作。

方法中的数据self和cls是隐式传递的,即方法的调用者;

方法可以操作类内部的数据

简单的说,函数在python中独立存在,可直接使用的,而方法是必须被别人调用才能实现的。

静态方法除外(与类和对象均无关,通过类名和对象名均可被调用,属函数)

在模块中实现的函数只要导入这个模块的这个函数既可以任意使用了,但是在类中声明的必须导入这个类之后然后再通过创建实例或者类名来调用。可以说直接在模块中声明的是更普遍广泛性的函数,而在类中声明的方法一般是专属于一类事物特有的

from types import MethodType,FunctionType

classFoo(object):

    def__init__(self):

        self.name="haiyan"

    deffunc(self):

        print(self.name)

obj = Foo()

print(isinstance(obj.func,FunctionType))#False

print(isinstance(obj.func,MethodType))#True  #说明这是一个方法

print(isinstance(Foo.func,FunctionType))#True  #说明这是一个函数。

print(isinstance(Foo.func,MethodType))#False

是的!例子中很明确,类对象调用func是方法,类调用func是函数,并且是自己传递参数123!

注意,这只是在 python3 中才有的区分,python2 中全部称为方法。

最大的区别是参数的传递参数,方法是自动传参self,函数是主动传参

那么以后我们就可以直接看参数是如何传递的来判断,

如果还不确定可以打印类型看看

from types import FunctionType,MethodType

print(isinstance(obj.func,MethodType))    ---># True

print(isinstance(Foo.func,FunctionType))  ---># True 

表面区别:

区别一所处的位置:函数是直接写文件中而不是class中,方法是只能写在class中。

区别二定义的方式:

 1.函数定义的方式 def关键字  然后接函数名 再是括号 括号里面写形参也可以省略不写形参 

deffunctionName():

"""这里是函数的注释"""

    print("这一块写函数的内容"

2.方法定义的方式 首先方法是定义在类中的其他他大体和函数定义差不多,这里需要注意的一点就是方法必须带一个默认参数(相当于this),静态方法除外

classclassName(super):

    defmethodName(self):

    """这里是方法的注释

        self相当于this;

    """

print("这里是方法的内容")

区别三调用的方式:

 1.函数的调用:函数的调用是直接写  函数名(函数参数1,函数参数2,......) 

deffunctionName():

    print("这是一个函数")

#调用

functionName()

2.方法的调用:方法是通过对象点方法调用的(这里是指对象方法)

classclassName:

    defmethod(self):

        print("这是一个方法")

#调用---------------------

#实例化对象

c=className()

c.method()

python类的实例方法、静态方法和类方法区别及其应用场景

一、先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法。

ps.python中self,cls的区别

普通实例方法,第一个参数需要是self,它表示一个具体的实例本身。

如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用。

而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身。

# coding:utf-8

classFoo(object):

"""类三种方法语法形式"""

definstance_method(self):

    print("是类{}的实例方法,只能被实例对象调用".format(Foo))

@staticmethod

defstatic_method():

    print("是静态方法")

@classmethod

defclass_method(cls):

    print("是类方法")

foo = Foo()

foo.instance_method()

foo.static_method()

foo.class_method()

print('----------------')

Foo.static_method()

Foo.class_method()

运行结果如下

是类的实例方法,只能被实例对象调用

是静态方法

是类方法

----------------

是静态方法

是类方法

说明:

实例方法只能被实例对象调用,静态方法(由@staticmethod装饰的方法)、类方法(由@classmethod装饰的方法),可以被类或类的实例对象调用。

实例方法,第一个参数必须要默认传实例对象,一般习惯用self。

静态方法,参数没有要求。

类方法,第一个参数必须要默认传类,一般习惯用cls。

https://blog.csdn.net/helloxiaozhe/article/details/79940321

https://blog.csdn.net/amoscn/article/details/77074403

转载自:https://blog.csdn.net/qq_43422918/article/details/89645735

相关文章

  • Python 中函数和方法的区别

    实例化出来的去调用,叫做方法. 直接使用类名去调用,叫做函数. 注意,这只是在 python3 中才有的区分,py...

  • python中函数和方法的区别

    本篇内容主要介绍从几个维度来介绍下python中函数和方法的区别: 首先,从分类的角度来分析。 (1)函数的分类:...

  • python中函数和方法的区别

    简单总结: 与类和实例无绑定关系的function都属于函数(function); 与类和实例有绑定关系的func...

  • Python 的key参数

    上一篇 :python中list.sort方法和内置函数sorted的区别 摘自流畅的Python Key参数很妙...

  • Function object and Method objec

    Python: 函数与方法的区别 以及 Bound Method 和 Unbound Method - 技术栈大杂...

  • Python 基础知识

    Python对象和方法调用 除了标准的函数和运算符,Python中还包含了大量的可以操作对象的方法。方法和函数类似...

  • 01-Python中函数和方法区别

    一、函数和方法的认知 首先摒弃错误认知:并不是类中的调用都叫方法. 接着上概念 函数 函数是封装了一些独立的功能,...

  • Python学习笔记

    python2和python3的区别 print函数 python2的print函数可以不加括号。python3必...

  • 一文了解Python中使用self的原因

    Python要用self的理由 Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一...

  • Lesson 011 —— python 注释

    Lesson 011 —— python 注释 确保对模块, 函数, 方法和行内注释使用正确的风格 Python中...

网友评论

    本文标题:python中函数和方法的区别

    本文链接:https://www.haomeiwen.com/subject/egpxbltx.html