Python学习笔记(8) --函数的多返回值,不同传参,匿名函数

传送门==>B站黑马python入门教程


目录

  • [1. 函数的多返回值](#1. 函数的多返回值)
  • [2. 函数的不同传参](#2. 函数的不同传参)
  • [3. 函数作为参数传递](#3. 函数作为参数传递)
  • [4. 匿名函数](#4. 匿名函数)

1. 函数的多返回值

若一个函数写了两个return时,程序如何执行?

python 复制代码
def get_info():
    return "张三"
    return 20

info = get_info()
print(info)

我们发现函数执行到第一个return时,程序就退出了;

如果一个函数要多个返回值,如何写代码

按照返回值的顺序,写对应顺序的多个变量接收即可;

变量之间可以用多个逗号分隔;

支持不同类型的数据return;

python 复制代码
# 示例;
def demo_return():
    return 1,2,"张三"

# 调用函数
a,b,c = demo_return()
print(a)
print(b)
print(c)

2. 函数的不同传参


在使用方式上的不同,函数有4中常见的参数使用方式;

  • 位置参数;
  • 关键字参数;
  • 缺省参数;
  • 不定长参数;

位置参数 :调用函数时根据函数定义的参数位置来传递参数;
注:函数定义的参数顺序必须与调用函数时传递的参数顺序一致

python 复制代码
def user_info(name,age,gender):
    """
    打印用户信息
    :param name: 用户名
    :param age: 用户年龄
    :return:
    """
    print("用户名:",name)
    print("用户年龄:",age)
    print("用户性别:",gender)

user_info("张三",18,"男")

关键字参数:函数调用时通过 "键值对"的形式传递参数;

作用:可以让函数更加清晰,容易使用,同时也清除了参数的顺序需求;

注:函数在调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

python 复制代码
def user_info(name,age,gender):
    """
    打印用户信息
    :param name: 用户名
    :param age: 用户年龄
    :return:
    """
    print("用户名:",name)
    print("用户年龄:",age)
    print("用户性别:",gender)

# 关键字传参:
user_info(name="张三",age=18,gender="男")
# 当然,可以不按照固定顺序;
user_info(gender="男",name="张三",age=18)
# 也可以和位置参数混合使用,位置参数在前面,且匹配参数顺序使用;
user_info("张三",gender="男",age=18)

缺省参数 : 即默认参数,用于定义函数时,为参数提供默认值,调用函数时可以不传默认参数的值;
注:所有位置参数都必须出现在默认参数前,包括函数定义和调用;

python 复制代码
def user_info(name,age,gender="男"):
    """
    :param name:
    :param age:
    :param gender: 默认为 男
    :return:
    """
    print("用户名:",name)
    print("用户年龄:",age)
    print("用户性别:",gender)

#
user_info("张三",18)
user_info("张三",18,"女")
# 年龄没有默认值,调用就会报错;
user_info("张三")


不定长参数 : 即可变参数,用于定义函数时,为参数提供默认值,调用函数时可以不传默认参数的值;

作用:当调用函数时不确定参数个数时,可以使用不定长的参数;

不定长参数的类型:

  • 位置传递,
  • 关键字传递

位置传递

注:传进的所有参数都会被args变量收集,它会根据传进参数的位置合并为一个元组,args是元组类型;

python 复制代码
def user_info(* args):
    print("用户信息:",args)

# 调用;
user_info("张三")
user_info("张三","男")
user_info("张三","男",18)
user_info("张三","男",18,"上海")
user_info("张三","男",18,"上海","中国")
user_info("张三","男",18,"上海","中国","中国")

关键字传递

注:参数是'键=值'形式的情况下,所有的'键=值'都会被kwargs接受,同时根据'键=值'组成字典

python 复制代码
def user_info(** kwargs):
    print("用户信息:",kwargs)

#
user_info(name="张三")
user_info(name="张三",age=18)
user_info(name="张三",age=18,gender="男")
user_info(name="张三",age=18,gender="男",city="上海")
user_info(name="张三",age=18,gender="男",city="上海",country="中国")

3. 函数作为参数传递


在前面的函数学习中,我们一直使用的函数,都是接受数据作为参数传入:

  • 数字
  • 字符串
  • 字典,列表,元组等

实际上,学习的函数本身也可以作为参数传入另一个函数内

示例如下代码:

python 复制代码
def test_func(compute):
    res = compute(1,2)
    print(f"参数compute类型为:{type(compute)}")
    print(res)

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

test_func(compute)

函数compute作为参数,传入test_func函数中使用

  • test_func需要一个函数作为参数传入,这个函数需要接收2个数字进行计算,计算逻辑由这个被传入的函数决定
  • compute函数接收2个数字对其进行计算,compute函数作为参数,传递到test_func函数使用;
  • 最终,在test_func函数的内部,由传入的compute函数,完成对数字的计算操作;

4. 匿名函数


lambda匿名函数

在函数定义中

  • def关键字,可以定义带有名称的函数
  • lambda关键字,可以定义匿名函数(没有名称)

有名称的函数,可以基于名称重复使用;

无名称的匿名函数,只可以临时使用一次;

匿名函数的定义语法:
lambda 传入参数:函数体(一行代码)

  • lambda是关键字,表示定义匿名函数
  • 传入参数表示匿名函数的形式参数,例如:x y表示接受2个形式参数;
  • 函数体,就是函数的执行逻辑,要注意的是:只能写一行,无法写多行代码

如下代码示例:

可以通过def关键字,定义一个函数,传入;

python 复制代码
def test_func(compute):
    res = compute(1,2)
    print(f"参数compute类型为:{type(compute)}")
    print(res)

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

test_func(compute)

可以通过lambda关键字,定义一个匿名函数

python 复制代码
def test_func(compute):
    res = compute(1,2)
    print(f"参数compute类型为:{type(compute)}")
    print(res)

test_func(lambda x,y:x+y)

使用def和lambda定义的函数,功能一样,只是lambda定义的函数,没有名称,只能使用一次;


相关推荐
2501_9216494921 小时前
主流金融数据API对比:如何获取精准、及时的IPO数据
开发语言·python·金融·restful
saoys21 小时前
Opencv 学习笔记:图像绘制(直线 / 圆 / 椭圆 / 矩形 / 多边形 + 文字添加)
笔记·opencv·学习
逑之21 小时前
C语言笔记13:数据在内存中的存储
c语言·开发语言·笔记
君鼎21 小时前
计算机网络第四章:网络层学习总结
学习·计算机网络
●VON21 小时前
绿色 AI:让智能计算与地球共生
人工智能·学习·安全·制造·von
数据轨迹00121 小时前
AAAI AMD:多尺度预测MLP反杀Transformer
经验分享·笔记·facebook·oneapi·twitter
Aliex_git21 小时前
性能优化 - Vue 日常实践优化
前端·javascript·vue.js·笔记·学习·性能优化
栈与堆21 小时前
LeetCode-88-合并两个有序数组
java·开发语言·数据结构·python·算法·leetcode·rust
超人小子21 小时前
自动化报表系统实战:用Python让报表工作智能化
运维·python·自动化
dagouaofei21 小时前
AI 生成 2026 年工作计划 PPT,内容质量差异在哪里
人工智能·python·powerpoint