Python函数进阶

Python函数进阶

函数多返回值

多返回值:可以返回多个值
注意事项:返回值是和接收值对位,第一个接收第一个,第二个接收第二个

# 演示多个变量,接收多个返回值
def test_return():
    return 1, "Hello", True

x,y,z = test_return()
print(x, y, z)

# 结果
1 Hello True

函数多种传参方式

位置参数

  • 根据参数位置来传递参数

关键字参数

  • 通过“键=值”形式传递参数,可以不限参数顺序
  • 可以和位置参数混用,位置参数需在前

缺省参数

  • 不传递参数值时会使用默认的参数值
  • 默认值的参数必须定义在最后

不定长参数

  • 位置不定长传递以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args
  • 关键字不定长传递以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs
def user_info(name, age, gender):
    print(f"姓名是:{name},年龄是:{age},性别是:{gender}")

# 位置传参 - 默认使用方式
user_info("小明", 20, "男")

# 关键字传参
user_info(name="小王", age=18, gender="男")
user_info(age=18, name="小王", gender="男")
user_info("小哈", age=10, gender="女")

# 缺省参数(默认值)
def user_info(name, age, gender = '男'):
    print(f"姓名是:{name},年龄是:{age},性别是:{gender}")

user_info("小天", 19)
user_info("小天", 19, "女")

# 不定长 - 位置不定长,*号
def user_info(*args):
    print(f"args类型是:{type(args)},内容是:{args}")

user_info("哈哈", 13, "男")

# 不定长 - 关键字不定长,**号
def user_info(**kwargs):
    print(f"args类型是:{type(kwargs)},内容是:{kwargs}")

user_info(name="二哈", age=19, gender="男")

# 结果
姓名是:小明,年龄是:20,性别是:男
姓名是:小王,年龄是:18,性别是:男
姓名是:小王,年龄是:18,性别是:男
姓名是:小哈,年龄是:10,性别是:女
姓名是:小天,年龄是:19,性别是:男
姓名是:小天,年龄是:19,性别是:女
args类型是:<class 'tuple'>,内容是:('哈哈', 13, '男')
args类型是:<class 'dict'>,内容是:{'name': '二哈', 'age': 19, 'gender': '男'}

函数作为参数传递

  • 函数本身是可以作为参数,传入另一个函数中进行使用的。

  • 将函数传入的作用在于:传入计算逻辑,而非传入数据

# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute):
    result = compute(1, 2)
    print(f"compute参数类型是:{type(compute)}")
    print(f"计算结果:{result}")

def compute(x, y):
    return x + y

test_func(compute)

# 结果
compute参数类型是:<class 'function'>
计算结果:3

lambda匿名函数

定义语法:

  • lambda 传入参数:函数体(一行代码)

注意事项:

  • 匿名函数用于临时构建一个函数,只用一次的场景

  • 匿名函数的定义中,函数体只能写一行代码,如果函数体要写多行代码,不可用lambda匿名函数,应使用def定义带名函数

# 定义一个函数,接收另一个函数作为传入参数
def test_func(compute):
    result = compute(1, 2)
    print(f"compute参数类型是:{type(compute)}")
    print(f"计算结果:{result}")

test_func(lambda x, y : x + y)

# 结果
compute参数类型是:<class 'function'>
计算结果:3
posted @ 2023-09-12 15:44  橙香五花肉  阅读(2)  评论(0编辑  收藏  举报