文章目录
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200427174816539.png)
1. 函数的定义及调用
1.1 为什么用函数
1.提高代码的复用性——抽象出来,封装为函数
2.将复杂的大问题分解为一系列的小问题,分而治之——模块化的设计思想
3.利于代码的维护和管理
def factoria(n):
res = 1
for i in range(1,n+1):
res *= i
return res
print(factoria(5))
print(factoria(20))
1.2 函数的定义及调用
白箱子:输入——处理——输出
三要素:参数、函数体、返回值
三要素之参数
1.2.1 参数传递
0. 形参与实参
形参:形式参数,函数定义时的参数,实际上就是变量名
实参:实际参数,函数调用时的参数,实际上就是变量的值
1. 位置参数
严格按照位置顺序,用实参对形参进行赋值(关联)
一般用在参数比较少的时候,实参和形参必须一一对应,且数目一致
2. 关键字参数
打破位置限制,直呼其名的进行值的传递(形参=实参)
一般用在参数较多的时候,实参和形参必须数目一致
Ps:位置参数可以与关键字参数混合使用,但位置参数必须放在关键字参数前面,不能为同一个形参重复传值
def function(x, y, z):
print(x, y, z)
function(1, z=2, y=3)
1 3 2
3. 默认参数
在定义阶段就给形参赋值——该形参的常用值
默认参数必须放在非默认参数的后面
在调用函数时,可以不对该形参传值,也可以正常传值
这在机器学习库的类方法里很常见
def register(name, age, sex='male'):
print(name, age, sex)
register("Alina", 24)
register("Alina", 24, "female")
默认参数应该设置为不可变类型(数字,字符串,元组)。
图中例子使用了列表作为默认参数,就导致每次调用就直接在原有列表的基础上进行增量操作,而指向的参数地址一直不变,无论再调用多少次,都一直在改变原列表内容,但未改变操作对象和地址。
通过设置默认值None,让参数变成可选的