Pyhon__学习笔记留痕__函数
一、变量作用域
- 局部变量与全局变量
函数内部定义的变量为局部变量,仅函数内可访问;函数外部定义的变量是全局变量,全文件可读。
2. global关键字
在函数内部声明,标识后续操作的变量为全局变量,实现函数内修改全局变量。
3. 全局变量使用规范
开发中尽量减少全局变量,过多会大幅提升代码维护、调试成本;
优先依靠函数参数、返回值完成数据传递,替代全局变量;
global仅适用于全局状态、配置、计数器等少数场景。
二、函数五大传参方式位置参数
调用函数时,实参顺序必须和形参定义顺序严格对应。
- 优势:书写简洁;缺点:参数多后可读性差、极易传参出错、维护成本高
- 适用场景:参数数量≤3个、参数顺序直观清晰的场景
- 关键字参数
调用时以 形参名=值 格式传参,参数顺序不受定义限制。
- 优势:代码可读性强,方便后期维护扩展;缺点:代码书写偏冗长
- 适用场景:参数数量多、参数含义易混淆的场景
- 混合传参规则:位置参数与关键字参数混用,位置参数必须写在前面,关键字参数之间无顺序要求
- 默认参数
定义函数时直接给形参预设默认值,调用时可省略该参数;若主动传参则覆盖默认值。
- 语法约束:带默认值的参数必须放在无默认参数的末尾,单函数可设置多个默认参数。
- 不定长位置参数 *args
用于参数数量不确定的场景,接收所有位置实参,自动封装为元组存储;args只是行业约定变量名,可自定义命名,仅收集位置参数,不捕获关键字参数。
- 不定长关键字参数 **kwargs
接收不定量关键字实参,自动封装为字典存储;
- 场景区分:*args 处理不确定数量的核心数据;**kwargs 处理可选配置类参数。
- 组合用法:可同时定义 *args, **kwargs ,兼容任意数量的位置、关键字参数。
三、参数数据类型分类
- 普通参数:支持数字、字符串、容器类(列表/元组/集合/字典)等常规数据;
- 特殊参数:函数本身可作为参数传入,实现高阶函数逻辑。
四、匿名函数 lambda
- 基础定义:无函数名的简易函数,使用lambda表达式声明,仅支持单行表达式逻辑;
- 语法特点:无需书写return,表达式执行结果自动作为返回值;可无参、可多参数;
- 使用场景:逻辑简单、仅单次调用的函数,常作为高阶函数的入参,简化代码书写;
- 取舍建议:复杂多行逻辑不建议使用lambda,可读性会大幅下降。
递归逻辑
实例练习
