定义函数
不带参数
语法: def 函数名():
def say():
print("世界真美好")
调用函数
必须放到定义函数的后面
say()
带一个参数的函数
函数和函数之间空格两行
语法: def 函数名(参数):
def say(what):
print(f"{what}")
调用函数
调用带参数的函数,如果不带参数过去,编译不报错,但是运行报错(跟java不同)
say("真好")
带两个参数的函数
def test(a, b):
print(f"a={a}")
print(f"b={b}")
调用函数
位置方式
test(22, 11)
关键字方式
test(b=22, a=11)
缺省参数
有默认值的参数必须放在没有默认值参数的后面
test(11, b=11)
可变参数
参数是元组类型
def test1(*args):
sum = 0
for i in args:
sum += i
else:
print(f"和为{sum}")
调用函数
print(test1(1, 2, 3))
函数返回值
函数的说明文档:
help(print())
返回值为多个(跟java不同)
def test3(a, b, c):
"""
这是一个测试函数,测试函数为多个返回值
:param a: 值1
:param b: 值2
:param c: 值3
:return: 返回多个值
"""
a += 100
b += 100
c += 100
return a, b, c
help(test3)
函数嵌套调用
def test1(*args):
"""这是一个求多个值和的函数"""
sum = 0
for i in args[0]:
sum += i
else:
# print(f"和为{sum}")
# 返回值
return sum
计算多个值的平均值
def test4(*args):
sum = test1(args)
return sum / len(args)
调用函数
print(test4(12,5,3))
测试变量范围
a=9
def test5():
# 在函数内部修改全局变量的值
# 必须声明 变量为全局变量
global a
a = 333
print(f"函数内:{a},地址为:{id(a)}")
print(f"函数外:{a},地址为:{id(a)}")
test5()
print(f"函数外:{a},地址为:{id(a)}")
递归:函数内部调用函数本身
求某个数以内的和
def test6(num):
if num == 1:
return 1
return num + test6(num - 1)
调用递归函数:
print(test6(100))
lambda表达式
匿名函数,如果一个函数有一个返回值,并且只有一句代码,就可以使用lanbda表达式简化
语法:
变量名=lambda: 表达式/返回值
不带参数的函数
say = lambda: "真美好"
print(say())
带一个参数的函数
say = lambda what: f"你说:{what}"
print(say("真美好"))
带两个参数的函数
test6 = lambda a,b=222: f"a={a},b={b}"
print(test6(1,2))
带条件的lambda
test7 = lambda a,b : a if a > b else b
print(test7(1,2))
Python函数到此结束,88