函数的定义与调用
# 定义
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只在函数内部使用
注意:如果函数内部没有重新定义变量则在函数内部可以使用全局变量,如果定义了局部变量则优先使用局部变量
递归函数