Python函数
函数的定义与调用
# 定义 def wash(): print("加水") print("搓洗") print("脱水") # 调用 wash()
函数传参数
def wash(a, b, c): print("加水{}升".format(a)) print("搓洗{}分钟".format(b)) print("脱水{}分钟".format(c)) wash(3, 40 ,10)
形参,实参
上例中a b c为行参 传递的 3 40 10为实参
实参与形参必须一一对应不能多或者少
关键字参数
可以使用以下方式传递参数
wash(a=3, b=40 ,c=10)
使用关键字参数参数传递顺序可以不一致
默认参数
def wash(a, b=20, c=10): print("加水{}升".format(a)) print("搓洗{}分钟".format(b)) print("脱水{}分钟".format(c)) wash(3, 40, 20)
注意:默认参数如果不传递参数值会使用默认值
默认参数后面不能有非默认参数即默认参数需要放在最后
可变长参数
示例
# 可变长参数 def funct1(*args): for i in args: print(i, end=" ") print() funct1(1, 2, 3, 4, 5) # 定义一个函数传递多个参数求和 def add_num(*args): sum = 0 for i in args: sum += i print(sum) add_num(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
函数综合传参-多个关键字
# 函数综合传参 def people(name, *args, age=18, **kwargs): print(name) print(args) print(age) print(kwargs) people("zhangsan", "man", age=25, salary=20000, department="IT")
使用参数**kwargs传递参数转换成字典 输出如下
zhangsan ('man',) 25 {'salary': 20000, 'department': 'IT'}
函数返回值
函数返回值是函数得到的一个结果
函数的功能要专一,一个函数只能完成一个功能
返回值示例
def test(a, b): c = a + b return c print(c) # 函数执行到return就结束了,这句不会继续执行 test(1, 2) # 调用执行函数 无输出 print(test(1, 2)) # 打印返回值输出3 d = test(1, 2) # 返回值可以赋值给变量 print(d)
函数结果要被其他地方调用就不用在函数内部使用print打印,色图return返回值
嵌套函数
在一个函数体内调用其他函数
def aaa(): print("aaa") def bbb(): print("bbb") aaa() bbb()
执行顺序
1,定义函数aaa
2,定义函数bbb
3,执行函数bbb
4,执行函数bbb内代码打印字符串bbb
5,执行函数bbb内代表aaa()即执行函数aaa 打印字符串aaa
输出为
bbb aaa
小结:
函数需要先定义在调用
调用函数就是执行函数体内的代码
函数类似一个变量,定义函数就是把函数体内代码在内存开放一个空间存放进去,通过函数名来调用
示例
传递三个数字返回最大值
def max_num2(a, b): if a > b: return a else: return b def max_num3(n1, n2, n3): aaa = max_num2(n1, n2) bbb = max_num2(aaa, n3) return bbb
解析
函数 max_num2传递2个参数返回较大的 函数 max_num3传递3个参数,在内部调用函数max_num2第一次调用返回参数1 2的较大值赋值给aaa 然后再次调用函数max_num2把aaa即参数1 2的较大值很参数3进行对比把较大赋值给bbb然后返回,最终获取了3给参数中的最大值
函数变量作用域
示例
name = "zhangsan" # 全局变量 def change_name(): name = "lisi" # 这个变量只在函数内部生效 gender = "male" print(name) change_name() print(name) # 结果为zhangsan print(gender) # 报错,变量gender只在函数内部使用
注意:如果函数内部没有重新定义变量则在函数内部可以使用全局变量,如果定义了局部变量则优先使用局部变量
递归函数