第8节-函数一(参数/传参/拆包)

一、函数简介

函数也是一个对象(万物皆对象)
函数中保存的代码需要调用时才会执行
在这里插入图片描述

二、函数的参数

定义形参相当于在函数内部声明了变量,但没有赋值
arg1,arg2为形参
def func(arg1,arg2):
codes block
实参相当于给形参赋值,需要与形参一一对应
在这里插入图片描述
注意:函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)
print是函数对象 print()是调用函数

三、参数的传递方式

定义形参的时候可以为形参指定默认值,如果用户传递了参数则默认值不生效,没有传递则默认值会生效
在这里插入图片描述

位置传参:将对应位置的实参赋值给对应位置的形参
关键字传参:根据参数名进行传递,可以不按形参定义的顺序传递
混合使用时,位置参数必须要放到关键字参数的前面
在这里插入图片描述
在这里插入图片描述

四、实参的类型

实参可以传递任意类型的对象,包括函数

五、不定长参数

5.1单*号不定长参数

定义函数时,可以在形参前面加一个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组

但是如果打印*+变量,那么输出的是拆包后的值

带*号的形参只能有一个,可以和其他参数配合使用,且位置参数必须要放到其前面
*形参只能接受位置参数,不能接受关键字参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.2双*号不定长参数

**形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
**形参只有一个,并且必须写在所有参数的后面
在这里插入图片描述

*args, **kwargs:混合使用时,*args必须要在**kwagrs的前面
在这里插入图片描述

六、参数的拆包

传递实参时,也可以在序列类型的参数前添加*号,这样它会自动的将序列中元素依次作为参数传递
要求序列中的元素的个数必须和形参的个数一致
在这里插入图片描述
在这里插入图片描述

fn(*dict)/fn(*dict.keys()):传入key值
fn(*dict.values())传入values
fn(*dict.items()):传入key-value的元组

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值