Python学习笔记(六)——函数

目录

参数传递

实参传递不可变对象

 实参传递可变对象

 位置参数和命名参数

 默认参数的灵活性

动态参数

位置动态参数

关键字动态参数

序列解包

 序列解包顺序

return语句

相关概念

return类型


参数传递

  1. 声明函数时声明的形式参数等同于函数体中的局部变量,在函数体中的任何位置都可以使用。
  2. Python参数传递方法是传递对象引用,而不是传递对象的值。
  3. 局部变量和形式参数变量的区别在于局部变量在函数体中绑定到某个对象,而形式参数变量则绑定到函数调用代码传递的对应实际参数对象。

实参传递不可变对象

  1. 在调用函数时,若传递的是不可变对象(int,float,str,bool)的引用,如果函数体
    中 修改对象的值,在函数内部直接修改形参的值不会影响实参。
a=0
b=0
def add(a,b):
    a=a+1
    b=b+4
    return a
print(add(1,3))
print(a)

如上述代码所示, a的数值不会因为函数内部数值的改变而改变。

 实参传递可变对象

若传递给函数的实参是可变序列,并且在函数内部使用下标或可变序列自身的 方法增加、删除元素或修改元素时,修改后的结果是可以反映到函数之外的,实参也得到相应的修改。
def modify(v, item):
#增加元素
  v.append(item)
  a = [2]
  modify(a,3)
 print(a) 
#[2, 3]
def modify(v): 
#修改列表元素值
  v[0] = v[0]+1
  a = [2]
  modify(a)
  print(a)
#[3]

 位置参数和命名参数

默认值参数必须出现在函数参数列表的最右端,且任何一个默认值参数右边不 能有非默认值参数。

 

 默认参数的灵活性

调用带有默认值参数的函数时,可以不对默认值参数进行赋值,也可以赋值, 具有较大的灵活性。

 

动态参数

位置动态参数

*形参                #形参列表的最后一位

def add(sax,*ass):
    print(ass)
add(45,312,45,78)

关键字动态参数

 **形参                #形参列表的最后一位

def add(sax,**ass):
    print(ass)
add(sax=132,y=45,s=12,q=45)

序列解包

 序列:字符串,列表,元组,字节流。

传递参数时,序列中的元素按照位置参数的方式传入函数。
>>> def demo(a, b, c):
>>> print(a+b+c)
>>> lis = [1, 2, 3] #列表
>>> demo(*lis) 6
>>> tup = (1, 2, 3) #元组
>>> demo(*tup) 6

序列元素的个数与形参个数一致。

 序列解包顺序

序列解包相当于位置参数,需要优先处理
>>> def demo(a, b, c):
>>> print(a,b,c)
>>> demo(a=1, *(2, 3))
#Traceback (most recent call last):
#File "<pyshell#26>", line 1, in <module>
demo(a=1, *(2, 3))
#TypeError: demo() got multiple values for argument 'a'
>>> demo(b=1, *(2, 3))
#Traceback (most recent call last):
#File "<pyshell#27>", line 1, in <module>
demo(b=1, *(2, 3))
#TypeError: demo() got multiple values for argument 'b'
>>> demo(c=1, *(2, 3))
#2 3 1

序列解包在关键参数解包之前
>>> def demo(a, b, c):
>>> print(a,b,c)
>>> demo(**{'a':1, 'b':2}, *(3,))
#SyntaxError: iterable argument unpacking follows keyword
#argument unpacking
>>> demo(*(3,), **{'a':1, 'b':2})
#Traceback (most recent call last):
#File "<pyshell#30>", line 1, in <module>
demo(*(3,), **{'a':1, 'b':2})
#TypeError: demo() got multiple values for argument 'a'
>>> demo(*(3,), **{'c':1, 'b':2})
#3 2 1

return语句

相关概念

return语句用来从一个函数中返回一个值,同时结束函数。
如果函数没有return语句,或者有return语句但是没有执行到,或者只有
return而没有返回值,Python将认为该函数以return None结束。
 若有多个返回值,多个返回值以逗号相隔。
def maximum( x, y ):
    if x>y:
        return x
    if x==y:
        return y
def info(a_list):
    a=len(a_list)
    b=min(a_list)
    c=max(a_list)
    return a,b,c

return类型

根据函数的参数和返回值,函数可以分为四种类型:
• 无参数,无返回值的函数:输出错误说明
• 无参数,有返回值的函数:返回时间
• 有参数,无返回值的函数:
• 有参数,有返回值的函数

传送门:Python全套学习笔记

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛哥带你学代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值