1. 什什么是函数
对功能和动作的封装
2. 函数定义, 函数名, 函数体以及函数的调⽤用
def 函数名(形参列表):
函数体(return)
3. 函数的返回值
1. 遇到return. 此函数结束, 函数后⾯面的东⻄西将不会再执⾏行行
2. return 返回值
1.如果return什什么都不写 或者 ⼲干脆不写return .那么返回的就是None
2.如果return后⾯面写了了⼀一个值. 则调⽤用者可以接收⼀一个结果
3.如果return后⾯面写了了多个结果, 则调⽤用者可以接收⼀一个tuple, 调⽤用者可以直接解构成 多个变量量
4.函数形参和实参的分类:
实参的分类:
1.位置参数:按照位置,给形参分类
2.关键字参数 按照形参的名字赋值
3.混合参数 位置参数放在前面 关键字参数放在前面
形参的分类(函数定义时)
1.位置参数 按照位置来声明形参
2.默认值参数(传值起不作用,不传值的话 起作用)
顺序:位置参数放在前面 默认值参数在后面
def regist(name,age,sex="男"):
print(name,age,sex)
regist("张三",18)
3.动态参数
1.*args位置参数的动态传参,系统会自动把所有参数聚合成元组
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 2,写函数,接收n个数字,求这些参数数字的和。(动态传参) 2 # def func(*nums): 3 # sum = 0 4 # for num in nums: 5 # sum += num 6 # return sum
2. **kwargs 关键字的动态传参,系统会自动把所有关键字参数聚合成字典
3.def(*args,**kwargs) 无敌模式
4.顺序:位置参数 *args 默认值 **args
5.在使用的时候可以任意搭配
4.在实参上面,*、**表示将可迭代对象打散。在形参上面表示聚合
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 5,写函数,传入函数中多个实参(均为可迭代对象如字符串,列表,元祖,集合等), 2 # 将每个实参的每个元素依次添加到函数的动态参数args里面. 3 # 例如 传入函数两个参数[1,2,3] (22,33)最终args为(1,2,3,22,33) 4 # 这个题目什么意思? ===> 这个题目不太会!!!! 5 def func(*args): 6 print(args) 7 sum1 = 0 8 for num in args: 9 sum1 += num 10 print(sum1) 11 12 13 # 这个题目的点在*和** 形参里面表示聚合 实参里面表示打散 14 lst1 = [1, 2, 3] 15 tu1 = (22, 33) 16 func(*lst1, *tu1) 17 """ 18 (1, 2, 3, 22, 33) 19 61 20 """