目录
函数的引入
函数--》工具(需要用的时候采用,提前造)
需要用函数的时候,拿来用就行了,提前写/复制粘贴
函数不会改变某一个功能的代码,它制作了一件事情--》封装(接口)让代码更加简洁
函数的定义
使用工具(函数)之前--》必须得造一个工具--》即定义函数
定义方式
''' def 函数名(等同于变量名)(): """对函数(工具)的描述信息""" 代码块 '''
函数定义的特性
函数定义过程,只检测语法,不执行代码
调用阶段,会执行代码
定义函数的三张形式
空函数
def login(): pass
有参函数
def guess(x,y): if x > y: print(x) else: print(y) guess(10,1)
无参函数
def guess(): x = 10 y = 1 if x > y: print(x) else: print(y)
函数的调用
定义完函数后
在用的时候,函数名加括号如guess()
就能直接调用了
函数的参数
形参
定义函数阶段的产物,具有接收实参的作用,具有描述一益
位置形参
从左到右依次接收实参的值
默认形参
1.如果你不给,使用默认值;如果调用的时候传值,使用传的值
2.默认形参必须得放在位置形参后面
实参
调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)
位置实参
从左到右依次给位置形参传值,一一对应,形参有多少个,实参也必须有多少个
关键字实参
1.位置实参必须卸载关键字实参的前面
2.按照形参名给形参传值(使用情况,基本为0)--》函数的参数一般0-3个,尽量不要超过3个
可变长参数
可变长形参
def min_2(x, y): if x > y: return y else: return x def min_4(a, b, c, d): res1 = min_2(a, b) res2 = min_2(c, d) return min_2(res1, res2) def min_8(a, b, c, d, e, f, g, h): res1 = min_4(a, b, c, d) res2 = min_4(e, f, g, h) return min_2(res1, res2) def min_10(a, b, c, *lt): # *lt,把所有传过来的实参全部接收,并且以元组的形式存储 print(lt) a, b, c, d, e, f, g, h, i, j, *_ = lt print(_) res1 = min_8(a, b, c, d, e, f, g, h) res2 = min_2(i, j) return min_2(res1, res2) res = min_10(1, 2, 3, 4, 5, 6, 7, -1, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 11, 1, ) # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参 print(res)
可变长实参
def min_2(x, y): if x > y: return y else: return x def min_4(a, b, c, d): res1 = min_2(a, b) res2 = min_2(c, d) return min_2(res1, res2) def min_8(a, b, c, d, e, f, g, h): res1 = min_4(a, b, c, d) res2 = min_4(e, f, g, h) return min_2(res1, res2) def min_10(a, b, c, d, e, f, g, h, i, j): print(a, b, c, d, e, f, g, h, i, j) res1 = min_8(a, b, c, d, e, f, g, h) res2 = min_2(i, j) return min_2(res1, res2) lt = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] res = min_10(*lt) # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参 print(res)