Python基础快速复习——函数

6 阅读3分钟

1.函数的定义

函数:提前组织好,可重复使用的,用来实现特定功能的代码段

def 函数名(参数列表):
    """文档字符串(可选,说明函数功能)""" 
    函数体 
    return 返回值(可选,无则返回None

先定义函数,后调用

程序调用一个函数需要执行四个步骤:

  • 调用程序在调用处暂停执行
  • 在调用时将实参复制给函数的形参
  • 执行函数体语句
  • 函数调用结束给出返回值,程序回到调用前的暂停处继续执行

二、函数的参数

参数是函数与外部交互的核心,Python 支持多种参数类型,优先级:位置参数 > 关键字参数 > 默认参数 > 可变参数 > 关键字可变参数

类型定义 / 调用方式核心说明
位置参数def f(a,b): ... / f(1,2)必传、按顺序匹配
关键字参数f(b=2, a=1)按参数名匹配,顺序可任意
默认参数def f(a, b=10): ...非必传,默认值建议用不可变类型
可变位置参数def f(*args): ...接收任意位置参数,打包为元组
可变关键字参数def f(**kwargs): ...接收任意关键字参数,打包为字典

传入的实际参数的类型不受限制,随意传,但是能不能跑就看具体代码

传入参数的数量是不限的

三、函数的作用域

变量的作用域指变量能被访问的范围,Python 中有 4 种作用域:

1. 作用域类型

  • 局部作用域(Local, L) :函数内部定义的变量,仅在函数内有效;
  • 嵌套作用域(Enclosing, E) :嵌套函数中,外层函数的变量,内层函数可访问(非全局);
  • 全局作用域(Global, G) :模块(.py 文件)级别定义的变量,整个模块可访问;
  • 内置作用域(Built-in, B) :Python 内置的变量 / 函数(如 printlen)。

2. 核心规则

  • 就近原则:变量查找优先从当前作用域往上层找;
  • 局部变量不能修改全局变量(除非用 global 声明);
  • 嵌套函数修改外层变量(Enclosing 作用域)需用 nonlocal 声明。

四、函数的进阶特性

1. 匿名函数(lambda)

lambda 关键字定义的极简函数,语法:lambda 参数列表: 表达式

  • 无函数名,仅能写一个表达式(不能写循环 / 条件语句);
  • 常用于临时逻辑、配合内置函数(如 sortedmapfilter)。

2.嵌套函数

函数内部定义另一个函数:

def outer(): 
    def inner(): 
        print("这是内层函数") 
    inner() # 外层函数调用内层函数 
outer() # 输出:这是内层函数

3. 递归函数

函数调用自身,需满足两个条件:

  • 有明确的终止条件(避免无限递归);
  • 每次调用都向终止条件靠近。

关于None:作为一个特殊的字面量,用于表示:空,无意义,其具有非常多的应用场景

  • 用在函数无返回值上
  • 用在if判断上:在if判断中,None等同于False,一般用于在函数中主动返回None,配合if判断做相关处理
  • 用于声明无内容的变量:定义变量,但暂时不需要变量有具体值,可以用None代替