当前位置:首页 > 后端开发 > 正文内容

Python函数的正确用法及其注意事项

邻居的猫1个月前 (12-09)后端开发1586

简略总结:

  • 与类和实例无绑定联系的function都归于函数(function);
  • 与类和实例有绑定联系的function都归于办法(method)。

首要摒弃过错认知:并不是类中的调用都叫办法

函数(FunctionType)

函数是封装了一些独立的功用,能够直接调用,能将一些数据(参数)传递进去进行处理,然后回来一些数据(回来值),也能够没有回来值。能够直接在模块中进行界说运用。 一切传递给函数的数据都是显式传递的。

办法(MethodType)

办法和函数相似,相同封装了独立的功用,可是办法是只能依托类或许目标来调用的,表明针对性的操作。

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

办法能够操作类内部的数据

简略的说,函数在python中独立存在,可直接运用的,而办法是有必要被他人调用才干完成的。
静态办法在外(与类和目标均无关,经过类名和目标名均可被调用,属函数)

在模块中完成的函数只需导入这个模块的这个函数既能够恣意运用了,可是在类中声明的有必要导入这个类之后然后再经过创立实例或许类名来调用。能够说直接在模块中声明的是更遍及广泛性的函数,而在类中声明的办法一般是专归于一类事物特有的

from types import MethodType,FunctionType
class Foo(object):
     def __init__(self):
         self.name="haiyan"
     def func(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关键字 然后接函数名 再是括号 括号里边写形参也能够省掉不写形参

def functionName():
    """这儿是函数的注释"""
    print("这一块写函数的内容"

2.办法界说的办法 首要办法是界说在类中的其他他大体和函数界说差不多,这儿需求留意的一点便是办法有必要带一个默许参数(相当于this),静态办法在外

class className(super):
    
    def methodName(self):
        """这儿是办法的注释
        self相当于this;
        """
        print("这儿是办法的内容")

差异三调用的办法:

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

def functionName():
    print("这是一个函数")
 
#调用
functionName()

2.办法的调用:办法是经过目标点办法调用的(这儿是指目标办法)

class className:
    
    def method(self):
        print("这是一个办法")
#Python学习沟通群:531509025 
#调用---------------------
#实例化目标
c=className()
 
c.method()

python类的实例办法、静态办法和类办法差异及其运用场景

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

ps.python中self,cls的差异

一般实例办法,第一个参数需求是self,它表明一个详细的实例自身。
假如用了staticmethod,那么就能够无视这个self,而将这个办法当成一个一般的函数运用。
而关于classmethod,它的第一个参数不是self,是cls,它表明这个类自身。

class Foo(object):
    """类三种办法语法方式"""
 
    def instance_method(self):
        print("是类{}的实例办法,只能被实例目标调用".format(Foo))
 
    @staticmethod
    def static_method():
        print("是静态办法")
 
    @classmethod
    def class_method(cls):
        print("是类办法")
 
foo = Foo()
foo.instance_method()
foo.static_method()
foo.class_method()
print('----------------')
Foo.static_method()
Foo.class_method()

运转成果如下

是类<class '__main__.Foo'>的实例办法,只能被实例目标调用
是静态办法
是类办法
----------------
是静态办法
是类办法

阐明:

实例办法只能被实例目标调用,静态办法(由@staticmethod装修的办法)、类办法(由@classmethod装修的办法),能够被类或类的实例目标调用。

  • 实例办法,第一个参数有必要要默许传实例目标,一般习惯用self。
    静态办法,参数没有要求。

  • 类办法,第一个参数有必要要默许传类,一般习惯用cls。

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=212

标签: python
分享给朋友:

“Python函数的正确用法及其注意事项” 的相关文章

manim边做边学--曲面

manim边做边学--曲面

Surface类是Manim中专为创立和控制杂乱的三维外表而打造的。 在实践运用中,无论是创立数学教育中的几许模型,仍是模仿物理现象中的曲面改变,乃至是构建杂乱的动画场景中的三维元素,Surface类都能以其强壮的功用和灵敏性满足咱们的需求。 经过Surface类的参数和办法,咱们能够创造出既传神又...

MySQL数据库写入反常,主库内存溢出,扩容+整理buff/cach!很开门

MySQL数据库写入反常,主库内存溢出,扩容+整理buff/cach!很开门

MySQL数据库写入反常,主库内存溢出,扩容+整理buff/cach!很开门 最近数据呈现了两次写入反常报错如下:org.springframework,jdbc.UncategorizedsQlException: PreparedstatementCallback; uncategzed 50L...

等精度频率计的规划与验证

等精度频率计的规划与验证

文章摘要:凭借于QuartusII PLL_IP核发生一个恣意频率被测时钟信号,规划一个等精度丈量模块,经过其处理后,再数码管上显现出六位的丈量频率数值,验证丈量的准确度。 关键词:Verilog HDL;等精度频率丈量;数码管;PLL_IP核 终究框图: 频率计,即频率计数器,专用于丈量被测信号...

【日记】差点把工装玩儿丢了(863 字)

【日记】差点把工装玩儿丢了(863 字)

正文   今日好大的妖风。正午外面吹得旗杆猎猎作响。吃饭的时分还能看到漫天的絮。尽管我也不清楚那究竟是什么……   上个周末差点把工装玩儿没了。昨日晚上临睡觉,处处找我那个西装外套,找不到。想了一下,应该没有落在体检中心,应该也没落在饭馆等等其他当地,横竖必定内行里。便是找不到。抛弃了。你死我活,想...

铃木swift为什么贵,为何这款小型车如此昂贵?

铃木swift为什么贵,为何这款小型车如此昂贵?

铃木Swift价格较高的原因可以归结为以下几点:1. 研发投入:铃木Swift在设计与研发方面投入了大量资源,确保了车辆的高性能和高质量。例如,第四代车型采用了铃木新一代平台“HEARTECT”,使用了大量高张力钢板,并在细节上进行了轻量化处理,使其具备轻量高刚性的车身结构。2. 高性能动力系统:铃...

r语言attach,深入理解R语言中的attach与detach函数

r语言attach,深入理解R语言中的attach与detach函数

在R语言中,`attach`函数用于将数据框(data frame)或列表(list)中的变量自动绑定到全局环境中,使得这些变量可以直接使用它们的名称而不需要前缀。这可以简化代码,使得对数据框或列表中的变量进行操作时更加方便。例如,假设你有一个名为`data`的数据框,其中包含变量`x`、`y`和`...