当前位置: 首页 > news >正文

6个月Python学习计划 Day 9 - 函数进阶用法

第一周

Day 1 - Python 基础入门 & 开发环境搭建
Day 2 - 条件判断、用户输入、格式化输出
Day 3 - 循环语句 + range 函数
Day 4 - 列表 & 元组基础
Day 5 - 字典(dict)与集合(set)
Day 6 - 综合实战:学生信息管理系统
Day 7 - 复盘 + 测试日

第二周

Day 8 - Python 函数基础


🎯 今日目标:

  1. 理解关键字参数、可变参数(*args、**kwargs)
  2. 掌握函数嵌套和作用域(局部变量与全局变量)
  3. 学会使用匿名函数(lambda)
  4. 掌握函数作为参数传递

✅ 1. 关键字参数(Keyword Arguments)

def introduce(name, age):print(f"{name} 今年 {age} 岁")# 位置参数
introduce("小王", 22)# 关键字参数
introduce(age=30, name="小张")

✅ 2. 可变参数:*args 和 **kwargs

# *args:接收多个位置参数(以元组形式接收)
def add_all(*args):return sum(args)print(add_all(1, 2, 3))  # 输出:6# **kwargs:接收多个关键字参数(以字典形式接收)
def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_info(name="小李", age=18, gender="男")

✅ 3. 作用域:局部变量 vs 全局变量

x = 10  # 全局变量def test():x = 5  # 局部变量print("函数内部 x =", x)test()
print("函数外部 x =", x)
# 使用 global 修改全局变量
count = 0def increase():global countcount += 1increase()
print(count)  # 输出:1

✅ 4. 匿名函数 lambda

# lambda 参数: 表达式
square = lambda x: x * x
print(square(5))  # 输出:25# lambda 用作排序的 key 函数
students = [("小明", 85), ("小红", 90), ("小刚", 78)]
students.sort(key=lambda x: x[1], reverse=True)
print(students)

✅ 5. 函数作为参数传递

def apply(func, x, y):return func(x, y)def add(a, b):return a + bprint(apply(add, 3, 4))  # 输出:7

🧠 小练习:

  1. 编写一个函数 my_sum(*args),可以求任意数量数字的总和。

    def my_sum(*args):"""接收任意数量的数字,返回总和。使用内置的 sum() 函数,也可手动遍历。"""return sum(args)# 测试
    print(my_sum(1, 2, 3))          # 输出:6
    print(my_sum(10, 20, 30, 40))   # 输出:100
    
  2. 使用 lambda 表达式对列表 [5, 2, 9, 1] 排序。

    # 原始列表
    nums = [5, 2, 9, 1]# 升序排序(默认)
    sorted_nums = sorted(nums, key=lambda x: x)
    print(sorted_nums)  # 输出:[1, 2, 5, 9]# 降序排序
    sorted_desc = sorted(nums, key=lambda x: x, reverse=True)
    print(sorted_desc)  # 输出:[9, 5, 2, 1]
    
  3. 写一个函数 describe_person(**kwargs),可以打印姓名、年龄、职业等任意信息。

    def describe_person(**kwargs):"""接收任意关键字参数,打印个人信息。"""print("=== 个人信息 ===")for key, value in kwargs.items():print(f"{key}{value}")# 测试
    describe_person(姓名="张三", 年龄=25, 职业="程序员")
    # 输出:
    # === 个人信息 ===
    # 姓名:张三
    # 年龄:25
    # 职业:程序员
    

✅ 今日小结:

  • *args 和 **kwargs 可分别处理不定数量的位置和关键字参数

    👉 *args 用于接收任意数量的 位置参数,传入后会以元组的形式存储。

    def my_sum(*args):return sum(args)print(my_sum(1, 2, 3))  # 输出:6
    

    👉 **kwargs 用于接收任意数量的关键字参数,传入后会以字典的形式存储。

    def show_info(**kwargs):for k, v in kwargs.items():print(f"{k}: {v}")show_info(name="小明", age=20, job="学生")
    
  • 局部变量的作用范围在函数内部,global 可以修改全局变量

    💡 局部变量 在函数内部定义,只在当前函数内有效。

    def func():x = 5print(x)func()
    # print(x)  # 报错,x 不在全局作用域
    

    💡 全局变量与 global

    count = 0def increase():global countcount += 1increase()
    print(count)  # 输出:1
    
  • lambda 是匿名函数,适合简单逻辑,常用于排序、过滤等操作

    lambda 语法简洁,适合定义一次性小函数。

    # 一般函数
    def square(x):return x * x# lambda 表达式
    square = lambda x: x * x
    print(square(5))  # 输出:25
    

    常见场景:排序、过滤、映射等。

    nums = [3, 1, 4, 2]
    sorted_nums = sorted(nums, key=lambda x: -x)
    print(sorted_nums)  # 输出:[4, 3, 2, 1]
    
  • 函数是“第一类对象”,可以作为参数传递

    Python 中,函数可以像变量一样使用,可以:

    • 作为参数传递
    • 作为返回值返回
    • 赋值给其他变量
    def add(a, b):return a + bdef apply(func, x, y):return func(x, y)print(apply(add, 3, 5))  # 输出:8
    
http://www.xdnf.cn/news/733411.html

相关文章:

  • 【ROS2实体机械臂驱动】rokae xCoreSDK Python测试使用
  • 单卡4090部署Qwen3-32B-AWQ(4bit量化)-vllm
  • 网易 - 灵犀办公文档
  • const ‘不可变’到底是值不变还是地址不变
  • Python使用
  • C 语言中 * count++ 引发的错误与正确指针操作解析
  • Lyra学习笔记2 GFA_AddComponents与ULyraPlayerSpawningManagerComponent
  • 玛哈特校平机实战指南:选型、应用痛点
  • 【Unity】模型渐变技术 BlendShapes变形
  • 深入理解复数加法与乘法:MATLAB演示
  • 云原生微服务架构演进之路:理念、挑战与实践
  • Hive的数据倾斜是什么?
  • 杨传辉:构建 Data × AI 能力,打造 AI 时代的一体化数据底座|OceanBase 开发者大会实录
  • Armv7l或树莓派32位RPI 4B编译faiss
  • @Pushgateway自定义脚本推送数据
  • C++继承权限与访问控制详解
  • 解决win自动重启(自用,留链接)
  • Express教程【002】:Express监听GET和POST请求
  • 基于CAPL的DDS子消息解析- Data
  • golang 基于redis实现集群中的主实例选举
  • Nginx网站服务:从入门到LNMP架构实战
  • 生动形象理解CNN
  • 文件雕刻——一种碎片文件的恢复方法
  • 为什么建立 TCP 连接时,初始序列号不固定?
  • 日志技术-LogBack、Logback快速入门、Logback配置文件、Logback日志级别
  • Kubernetes 入门:安装 kubectl 并掌握基础命令
  • RK3568 OH5.1 编译运行程序hellworld
  • (22)大文件流式处理
  • 五星级酒店技能比赛主持稿串词
  • framework之慕课大巴