Python基础之函数、方法

系统 1495 0

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

定义一个函数:

            
              def 函数名(参数列表):
    函数体

            
          

#定义一个没有参数,没有函数体实现的函数;pass相当于占位符,使定义函数满足语法要求,或者是先定义一个函数名,后面再实现其功能

            
              def func():
    pass

            
          

#定义一个add函数,参数为a,b,返回a+b的结果:

            
              def add(a,b):
    return a+b

print(add(1,2))
3

            
          

return函数最终返回的内容,如果没有写return,则默认返回None,相当于return None
函数不一定要显式返回,具体要看函数的功能

函数分为内置的函数和自定义的函数两种

函数的作用:
1.封装,别人无须知道实现的细节
2.修改的时候,一处修改,全局生效
3.使用的时候方便,调用函数就可以了

什么时候会用到函数?
策略:
当你写了大段大段的相同或者类似地代码段后,就需要尝试去封装为函数。

如何写一个函数:
1.传参的类型判断,不符合计算规则的参数需要忽略或者其他处理。
2.思考需要声明哪些变量来存储计算结果和中间的计算过程值。
3.开始写的时候,最好加上中间状态的打印语句。一般用的逻辑是遍历+if判断+return短路等。
4.计算完毕,想清楚返回1个还是多个数据的结果。

函数的参数

可变长参数(参数数量不固定)
*arg:表示把可变的多个非命名参数,转换为了一个元组
**kw:表示把可变的多个命名参数,转换为了一个字典
例:

            
              def add(a,*arg):
    result = a
    for num in arg:
        result += num
    return result

print(add(1,2,3,4))
10

            
          

在这里插入图片描述

            
              def print_sth(a,**kw):
    print(a)
    for k,v in kw.items():
        print(k,v)

print_sth(1,b=2,c=3)

            
          

在这里插入图片描述

*arg和**kw可以混合使用

            
              def func(a,b,*arg,**kw):
    result = a * b
    for i in arg:
        result *= i
    for j in kw.values():
        result *= j
    return result

print(func(1,2,3,4,f=5))  #等价于1*2*3*4*5

            
          

在这里插入图片描述

函数传入的参数为不可变的,对外部的变量就没影响。
按值传–传入的不是变量对应的内存地址。
函数传入的参数为可变的,对外部的变量就有影响。
按引用传–传入的是变量对应的内存地址。

注:
不可变对象:所有的数字、字符串、元组
可变:set dict list 实例
参数传不可变对象的时候,函数内外变量值是独立的
参数传可变对象的时候,函数内外变量值是关联的

原则1:
如果你传入的参数是个变量a,这个变量是可变类型(list、dict、set)
那么函数内部对于这个参数的所有操作结果都会影响外部的参数值

原则2:
如果你传入的参数是个变量a,这个变量是不可变类型(字符串、整数、小数)
那么函数内部对于这个参数的所有操作结果不会影响外部的参数值

函数和方法

函数:不写在类里面
方法:写在类里面的
实例或类里的叫方法
不在实例或类里的叫函数

几种方法的区别
类方法、实例方法、静态方法
类方法可以被类对象或实例调用,实例方法只能被实例调用,它只属于类的单个实例拥有,静态方法两者都能调用,它在类和实例间共享。Python实现了一定的灵活性使得类方法和静态方法,都能够被实例和类二者调用。
所以三者主要区别在于参数传递上的区别,实例方法隐含传的参数是类实例self,而类方法隐含传递的参数是类本身cls,而静态方法无隐含参数,主要为了类实例也可以直接调用静态方法(方法的参数将在类/面向对象部分讲到,此处不做扩展)

Python类中隐藏数据
类中的方法名前后都有两个下划线,表示是Python的内置方法,如__init__()
类中的方法名前面有两个下划线,表示是Python中的私有方法,类似于java中的private,不能在类外部调用(如__setId()).
类中的属性前有两个下划线表示声明该属性为私有属性,不能在类的外部被使用或直接访问,如__name


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论