day 10 函数定义/参数
函数的定义
函数就相当于将代码封装起来,变成一个可以直接使用的工具
def 函数名(参数1, 参数2, ...):
代码块
return 返回值
使用函数的好处:
- 增加代码可读性
- 增加代码扩展性
定义函数的三种形式
空函数
def func():
pass
只知道你需要建立这个函数,但暂时不写时,可以先用空函数预留位置
无参函数
def min():
x = 10
y = 20
if x > y:
return y
else:
return x
函数定义阶段括号内没有参数,调用的时候也不需要放入参数
如果函数体代码逻辑不需要依赖外部传值,必须得定义成无参函数
有参函数
def min(x, y):
if x > y:
return y
else:
return x
函数定义阶段括号内有参数,调用的时候也必须传入参数
如果函数体代码逻辑需要依赖外部传值,就必须定义成有参函数
函数的返回值
函数内部经过一系列的逻辑处理得到的结果
函数中用return来返回值
return的特性:
- 可以终止函数,函数中可以有多个return,只要执行到return,函数就终止
- 可以同时返回多个值,如果没有返回值,则默认返回None
- 返回的值可以是任意类型
函数的调用
def min(x, y):
if x > y:
return y
else:
return x
min(10, 20)
print(min(10, 20))
min(min(55,66),77)
函数的参数
形参
在函数定义阶段括号内定义的参数,本质是变量名
位置形参
在函数定义阶段,依次按从左到右的顺序定义的参数称为位置形参
默认形参
在函数定义阶段,就已经被赋值的参数叫做默认形参,调用是可以不用传入参数,默认为已经赋予的值,如果传入参数,就会重新被赋值
默认参数必须在位置参数的右边
实参
在函数调用阶段传入的参数,本质是变量的值
位置形参
在函数调用阶段,依次按从左到右的顺序传入的参数被称为位置实参
关键字实参
在函数调用阶段,按照key=value的形式为指定的参数进行值的传入,称为关键字实参
关键字实参必须在位置参数的右边
可变长参数
可变长形参*
函数定义阶段,可以用*来接收传入的多个位置实参,然后以元组的方式存储,然后把元组赋值给*后边的参数,需要注意的是:约定俗成的形参名称为args
def func(*args):
for i in args:
print(i)
func(1, 2, 3, 5)
1
2
3
5
可变长实参*
实参中的,会将*后参数的值循环取出,打散成位置实参。以后但凡碰到实参中带*的,它就是位置实参,应该马上打散成位置实参去看。