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

Python 函数(Function)核心知识点

Python 函数是组织代码、实现复用的核心结构,核心知识点可归纳为以下几类,覆盖定义、调用、参数、进阶特性等关键内容:

一、函数的基本定义与调用

函数通过 def 关键字定义,包含 “函数名、参数、函数体、返回值” 四要素,调用时直接使用函数名 + 括号传递参数。

  1. 基本语法:
    def 函数名(参数列表):函数体  # 要执行的代码return 返回值  # 可选,无return则默认返回None
    
      
  2. 调用示例:
     
    def add(a, b):  # 定义函数,参数a、breturn a + b  # 返回计算结果result = add(3, 5)  # 调用函数,传递参数3、5,接收返回值
    print(result)  # 输出:8
    
     

二、函数的参数类型

Python 函数参数支持多种传递方式,核心是 “位置” 和 “关键字” 的灵活组合,避免参数混淆。

  • 位置参数:必须按定义顺序传递,数量与参数列表一致(如上述 add(3,5) 中,3 对应 a,5 对应 b)。
  • 关键字参数:通过 “参数名 = 值” 传递,可打乱顺序(如 add(b=5, a=3),结果仍为 8)。
  • 默认参数:定义时给参数设默认值,调用时可省略该参数(默认值需放在参数列表末尾):
     
    def greet(name, msg="Hello"):  # msg默认值为"Hello"print(f"{msg}, {name}!")greet("Alice")  # 省略msg,输出:Hello, Alice!
    greet("Bob", "Hi")  # 覆盖默认值,输出:Hi, Bob!
    
     
  • 可变长参数:处理不确定数量的参数,分两类:
    1. *args:接收任意数量的位置参数,打包成元组(tuple):
       
      def sum_all(*args):return sum(args)  # sum()可直接计算元组元素和print(sum_all(1,2,3))  # 输出:6;args=(1,2,3)
      
       
    2. **kwargs:接收任意数量的关键字参数,打包成字典(dict):
       
      def print_info(**kwargs):for k, v in kwargs.items():print(f"{k}: {v}")print_info(name="Alice", age=20)  # 输出:name: Alice;age: 20;kwargs={"name":"Alice", "age":20}
      
       

三、函数的返回值(return)

  • 函数通过 return 传递结果,执行到 return 后会立即退出函数(后续代码不执行)。
  • 可返回多个值,默认以元组形式返回,调用时可直接解包:
     
    def get_info():name = "Alice"age = 20return name, age  # 等价于 return (name, age)n, a = get_info()  # 解包,n="Alice",a=20
    
     
  • 无 return 或 return 后无值时,默认返回 None(如 def hello(): print("Hi"),调用后返回 None)。

四、函数的进阶特性

1. 匿名函数(lambda)

  • 用 lambda 定义 “单行短函数”,无函数名,语法:lambda 参数: 表达式(表达式结果即返回值)。
  • 常与 sorted()map() 等函数配合使用,简化代码:
     
    # 用lambda定义简单加法
    add = lambda a, b: a + b
    print(add(3,5))  # 输出:8# 配合sorted()按元组第二个元素排序
    lst = [(1,3), (4,1), (2,5)]
    sorted_lst = sorted(lst, key=lambda x: x[1])  # key指定排序依据
    print(sorted_lst)  # 输出:[(4,1), (1,3), (2,5)]
    
     

2. 嵌套函数(内部函数)

  • 函数内部可定义另一个函数(内部函数),内部函数可访问外部函数的变量(闭包基础):
     
     
    def outer(x):def inner(y):  # 内部函数return x + y  # 访问外部函数的xreturn inner  # 外部函数返回内部函数f = outer(3)  # f等价于inner,且已“记住”x=3
    print(f(5))  # 调用inner(5),输出:8
    
     

3. 闭包

  • 满足两个条件的嵌套函数:① 内部函数引用外部函数的 “非全局变量”;② 外部函数返回内部函数(如上述 outer() 示例)。
  • 作用:保留外部函数的变量状态,避免使用全局变量。

4. 装饰器(decorator)

  • 不修改原函数代码,为函数 “添加额外功能”(如日志、计时、权限校验)的工具,本质是 “接收函数、返回函数的函数”。
  • 用 @装饰器名 语法简化调用:
     
    # 定义装饰器:计算函数执行时间
    import time
    def timer(func):def wrapper(*args, **kwargs):  # 接收原函数的所有参数start = time.time()result = func(*args, **kwargs)  # 调用原函数end = time.time()print(f"{func.__name__}执行时间:{end-start:.2f}秒")return result  # 返回原函数结果return wrapper# 用@为sum_all函数添加计时功能
    @timer
    def sum_all(*args):time.sleep(1)  # 模拟耗时操作return sum(args)sum_all(1,2,3)  # 输出:sum_all执行时间:1.00秒;返回6
    
     

五、函数的作用域

变量的可访问范围,Python 遵循 LEGB 规则(优先级从高到低):

  1. L(Local):函数内部的局部变量(仅函数内可访问)。
  2. E(Enclosing):嵌套函数的外部函数变量(如闭包中的外部变量)。
  3. G(Global):全局变量(定义在函数外,整个文件可访问),函数内修改需用 global 声明。
  4. B(Built-in):Python 内置变量 / 函数(如 print()sum(),无需定义直接用)。

示例:
 
global_var = 10  # 全局变量def outer():enclosing_var = 20  # E层变量def inner():local_var = 30  # L层变量print(local_var, enclosing_var, global_var)  # 可访问L、E、Ginner()outer()  # 输出:30 20 10
 

六、常用内置函数

Python 提供大量无需定义的内置函数,简化开发,常见如:

  • 数据处理:sum()(求和)、max()(最大值)、min()(最小值)、len()(长度)。
  • 类型转换:int()str()list()dict()
  • 迭代操作:map(func, iter)(用 func 处理迭代器元素)、filter(func, iter)(筛选满足条件的元素)。
  • 其他:print()(输出)、input()(输入)、range()(生成整数序列)。
http://www.hskmm.com/?act=detail&tid=201

相关文章:

  • WPF中的坐标系统
  • 关于Genieacs的配置
  • HyperWorks许可管理软件
  • JMeter通过正则表达式、JSON提取器获取变量
  • ARC176E题解
  • DP 总结(未完成)
  • Code and Data Relocation in Zephyr
  • 产品经理实战指南:用户需求分析全流程详解(含工具链整合)
  • 模板
  • kylin V11安装mysql8.0
  • 【Kubernetes】 PVC 和 PV
  • Docker镜像
  • idea 允许多运行java示例 idea2022版本
  • ROS2环境配置
  • 2025年第五届电子信息工程与计算机科学国际会议(EIECS 2025)
  • P6477 [NOI Online #2 提高组] 子序列问题 题解
  • iframe 跨域通信实战:可视化编辑器的技术实现
  • windows项目下统计代码行数
  • 。。。
  • ETF 简介
  • 实时流式响应的 SSE 技术实现
  • 2025年艺术、教育和管理国际学术会议(ICAEM 2025)- 第五期
  • CF 1048 Div.2 解题报告
  • reLeetCode 热题 100-1 两数之和-扩展1 unordered_map实现 - MKT
  • 读书笔记:什么是对象表?
  • AI 服务路由策略:如何实现智能负载均衡
  • 在SQL语句中的别名
  • 多维度排序算法在企业级应用中的性能优化
  • 正则表达式在代码解析中的高级应用
  • vue3 项目中优雅的使用 SVG 图标(vite-plugin-svg-icons)