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

Python 学习日记 day26

@浙大疏锦行

以下是整理后的 Python 学习日记,结合知识点解析与代码示例,帮助系统理解函数相关核心概念:

一、函数的定义

作用:封装可重复使用的代码块,提高代码复用性。
语法

def 函数名(参数列表):"""文档字符串(可选)"""函数体return 返回值(可选)

示例

# 无参数函数
def greet():print("Hello, Python!")# 有参数有返回值函数
def add(a, b):return a + b# 调用函数
greet()          # 输出:Hello, Python!
result = add(3, 5)
print(result)    # 输出:8

二、变量作用域:局部变量 vs 全局变量

1. 局部变量
  • 定义:在函数内部声明的变量,仅在函数内有效。
  • 示例
    def func():x = 10  # 局部变量print("局部变量 x:", x)func()       # 输出:局部变量 x: 10
    # print(x)   # 报错:NameError: name 'x' is not defined
    
2. 全局变量
  • 定义:在函数外部声明的变量,可在全局范围内访问(包括函数内部)。
  • 示例
    count = 5  # 全局变量def show_count():print("全局变量 count:", count)  # 函数内可直接访问全局变量show_count()  # 输出:全局变量 count: 5
    
3. 在函数内修改全局变量
  • 若需在函数内修改全局变量,需用 global 关键字声明。
    total = 0def add_to_total(num):global total  # 声明使用全局变量total += numadd_to_total(10)
    print(total)  # 输出:10
    

三、函数的参数类型

1. 位置参数
  • 特点:必须按顺序传递参数,数量与声明一致。
  • 示例
    def user_info(name, age):print(f"姓名:{name},年龄:{age}")user_info("Alice", 25)  # 正确:按位置传递
    # user_info(25, "Alice")  # 错误:顺序错误导致逻辑混乱
    
2. 默认参数
  • 特点:声明时指定默认值,调用时可省略该参数。
  • 示例
    def user_info(name, age=18):  # age 为默认参数print(f"姓名:{name},年龄:{age}")user_info("Bob")         # 输出:姓名:Bob,年龄:18(使用默认值)
    user_info("Charlie", 30) # 输出:姓名:Charlie,年龄:30(覆盖默认值)
    
3. 不定参数(可变参数)
  • *args(接收任意数量的位置参数)
    def sum_numbers(*args):total = 0for num in args:total += numreturn totalprint(sum_numbers(1, 2, 3))   # 输出:6
    print(sum_numbers(1, 2, 3, 4)) # 输出:10
    
  • **kwargs(接收任意数量的关键字参数)
    def print_kwargs(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_kwargs(name="Alice", age=25, city="New York")
    
    输出
    name: Alice
    age: 25
    city: New York
    

四、传递参数的手段:关键词参数

  • 定义:调用函数时通过 参数名=值 的形式传递参数,无需关注顺序。
  • 示例
    def calculate(a, b, operator):if operator == "+":return a + belif operator == "-":return a - b# 用关键词参数指定参数名,顺序可任意
    result = calculate(operator="+", a=10, b=5)
    print(result)  # 输出:15
    

五、传递参数的顺序:同时存在多种参数类型时

当函数同时包含 位置参数、默认参数、*args**kwargs 时,必须严格遵循以下顺序:

def func(位置参数, 默认参数, *args, **kwargs):pass

示例

def example(a, b=10, *args, **kwargs):print("位置参数 a:", a)print("默认参数 b:", b)print("不定位置参数 args:", args)print("不定关键字参数 kwargs:", kwargs)# 调用示例
example(1, 2, 3, 4, c=5, d=6)

输出

位置参数 a: 1
默认参数 b: 2
不定位置参数 args: (3, 4)
不定关键字参数 kwargs: {'c': 5, 'd': 6}

总结:核心要点速查表

概念关键点
函数定义def 关键字,参数列表,return 返回值
局部变量函数内声明,作用域仅限函数内
全局变量函数外声明,需 global 关键字在函数内修改
参数类型位置参数(必选顺序)、默认参数(可选)、*args(任意位置参数)、**kwargs(任意关键字参数)
关键词参数按 参数名=值 传递,忽略顺序
参数传递顺序位置参数 → 默认参数 → *args → **kwargs

学习建议

  1. 多写示例代码,观察参数传递和作用域的实际效果。
  2. 遇到报错时,根据错误信息检查参数数量、类型和顺序是否匹配。
  3. 优先使用关键词参数提高代码可读性,避免位置错误。
http://www.xdnf.cn/news/8927.html

相关文章:

  • 蓝桥杯178 全球变暖
  • 【深度解读】三一重工的数字化转型(下篇2)
  • 大数据学习(118)-SQL面试问题总结
  • @Valid和@Vlidated的区别
  • Windows安装Docker Desktop开启 Kubenetes制作并部署本地镜像
  • Java 装饰器模式(Decorator)详解​
  • AI练习:指纹
  • [C语言实战]C语言文件操作实战:打造高效日志系统(六)
  • RMAN恢复报错RMAN-06555及其解决方案
  • STM32F103_Bootloader程序开发02 - Bootloader程序架构与STM32F103ZET6的Flash内存规划
  • idea和cursor快速切换
  • 【Linux】定时任务 Crontab 与时间同步服务器
  • 基于多头注意力时间卷积网络(MATCN)的虚拟电厂短期功率预测模型
  • 『uniapp』自己实现手动图片列表滑动 + 图片手势缩放+ 图片点击缩放(详细图文注释)
  • 分布式消息中间件设计与实现
  • Android自定义View学习总结
  • 【机器人】复现 Embodied-Reasoner 具身推理 | 具身任务 深度推理模型 多模态场景 长远决策 多轮互动
  • Python Day33
  • GO 语言中变量的声明
  • Python中字典(dict)知识详解应用
  • 非接触式互连:当串扰是您的朋友时
  • NumPy 数组属性
  • 英语科研词汇现象及语言演变探讨
  • Rephrase and Respond :让大语言模型为自己提出更优的问题
  • Disruptor—3.核心源码实现分析二
  • 第十八章:数据治理之数据质量:“数据质量”不仅仅和“数据质量”有关
  • 数据库故障排查指南技术文章
  • 用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来!
  • 【Python 元祖】 Tuple 核心知识点
  • no cmake_c_compiler could be found.