当前位置: 首页 > 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
    

相关文章:

  • ros2工程在普通用户下正常编译但root下编译无法成功也不会自动停止
  • 历年南开大学计算机保研上机真题
  • flask入门
  • MySQL数据归档利器:pt-archiver原理剖析与实战指南
  • 阻止H5页面中键盘收起的问题
  • React从基础入门到高级实战:React 高级主题 - React Concurrent 特性:深入探索与实践指南
  • springboot文件上传下载
  • AgenticSeek,开源本地通用AI Agent,自主执行任务
  • 如何优化Hive的查询性能?请详细说明查询优化的各个层面(SQL优化、配置优化、资源优化等)和具体方法。
  • Oracle数据库性能优化的最佳实践
  • 数据结构 堆与优先级队列
  • 【数据库】数据库恢复技术
  • 使用 Cython 编译将.py文件加密成.so文件
  • Apptrace:APP安全加速解决方案
  • 企业知识库问答系统避坑指南:检索优化与生成一致性解决方案
  • 【Redis】hash
  • Haproxy
  • 不用 apt 的解决方案(从源码手动安装 PortAudio)
  • MiniMax V-Triune让强化学习(RL)既擅长推理也精通视觉感知
  • MyBatisPlus--快速入门
  • 海南在线人才网招聘官网/赣州seo外包
  • 外汇平台网站开发需求说明/全国新闻媒体发稿平台
  • 电子书网站开发/免费网站推广方式
  • 广州冼村是什么地方/网站关键词优化培训
  • 欧阳网站建设/微信营销的模式有哪些
  • 给家乡做网站/百度快照优化的优势是什么