如果一个函数里面有俩个return,程序会执行到以一个return,因为return会退出当前函数,下方return下方的代码不执行
def return_num():
return 1
return 2
result = return_num()
print(result)
# 结果只会返回1
如果一个函数要返回多个返回值,按照返回值的·顺序,写对应顺序的多个变量接收。变量之间用逗号隔开,支持不同类型的数据return
def return_num():
return 1,2
x, y = return_num()
print(x)
print(y)
# 结果分别返回1, 2
位置参数:调用函数时根据函数定义的参数位置来传递参数,传递参数和定义的参数顺序及个数必须一致
def user_info(name, age, gender):
print(f"你的名字是{name},你的年龄是{age},性别是{gender}")
user_info("Tom",20,"男")
# 结果 你的名字是Tom,你的年龄是20,性别是男
关键字参数:函数调用时通过 ”键=值“形式传递参数
作用:可以让函数更加清晰,容易使用,清除了参数的顺序需求
注意:如果有位置参数,位置参数必须在关键字参数前面,但关键字参数之间不存在先后顺序
def user_info(name, age, gender):
print(f"你的名字是{name},你的年龄是{age},性别是{gender}")
user_info(name="Tom", age=20, gender="男")
user_info( age=20, gender="男",name="Tom") # 可以打乱顺序
user_info("Tom", age=20, gender="男") # 位置参数在前,关键字参数在后
# 结果
#你的名字是Tom,你的年龄是20,性别是男
#你的名字是Tom,你的年龄是20,性别是男
#你的名字是Tom,你的年龄是20,性别是男
缺省参数:缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时可不传默认参数的值(所有位置参数必须出现在默认参数前,包括函数定义和调用)
def user_info(name, age, gender='男'):
print(f"你的名字是{name},你的年龄是{age},性别是{gender}")
user_info("小天", "18")
# 结果 你的名字是小天,你的年龄是18,性别是男
user_info("小天", "18", "女")
# 结果 你的名字是小天,你的年龄是18,性别是女
不定长参数:不定长参数也叫可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。
作用:当调用函数时不确定参数个数时,可以使用不定长参数
类型:位置传递,关键字传递
位置传递:传递的所有参数都会被args收集,他会根据传进参数的位置合并成一个元组tuple,args是元组类型,这就是位置传递。(定义*args是约定俗成)
def user_info(*args):
print(f"args的类型是{type(args)},args的内容是{args}")
user_info(1, 2, 3, 4, 5, "你好")
# 结果 args的类型是<class 'tuple'>,args的内容是(1, 2, 3, 4, 5, '你好')
关键字传递:参数是在"键= 值"形式的情况下,所有的”键= 值“都会被kwargs接受,同时组成字典 (定义**kwargs是约定俗成)
def user_info(**kwargs):
print(f"kwargs的类型是{type(kwargs)},kwargs的内容是{kwargs}")
user_info(name="小明", age=18, gender="男")
# 结果 kwargs的类型是<class 'dict'>,kwargs的内容是{'name': '小明', 'age': 18, 'gender': '男'}
函数本身也可以作为参数传入另一个函数当中,传入计算逻辑,而非传入数据
def num(x, y):
return x + y
def num1(num):
result = num(1, 2)
print(type(num)) # <class 'function'>,功能函数
print(result)
return result
num1(num)
在函数的定义中:def定义带有名称的函数,可以重复使用
lambda关键字,可以定义匿名函数(无名称),只可以临时使用一次
语法:lambda 传入参数:函数体:(只能写一行代码),用于临时构建一个函数,只用一次的场景
def num1(num):
result = num(1, 2)
print(result)
return result
num1(lambda x, y: x + y)