教程 python tutorial

返回值与函数嵌套

在 Python 中,函数不仅可以接收参数并执行任务,还可以返回值。除此之外,Python 也支持函数嵌套,即在一个函数内定义和调用另一个函数。理解这两种特性能帮助你编写更加灵活、可维护的代码。

返回值

函数的返回值是 Python 函数的一个重要特性。通过 return 语句,函数可以返回一个结果,供外部调用者使用。

使用 return 返回值

python
def add(a, b):
    return a + b

result = add(2, 3)
print(result)  # 5

在这个例子中,add 函数计算两个参数的和,并通过 return 语句返回结果。

返回多个值

Python 允许函数返回多个值,这些值会作为元组返回。

python
def get_coordinates():
    x = 10
    y = 20
    return x, y

x, y = get_coordinates()
print(x, y)  # 10 20

在这个例子中,get_coordinates() 返回了两个值,分别是 x 和 y,它们被接收并打印。

返回值与 None

如果一个函数没有显式的 return 语句,Python 会默认返回 None。

python
def say_hello():
    print("Hello!")

result = say_hello()
print(result)  # None

此时,say_hello() 函数没有返回任何值,因此返回了 None。

函数嵌套

函数嵌套是指在一个函数内部定义另一个函数。内嵌的函数可以访问外部函数的变量,这为编写更具灵活性的代码提供了便利。

嵌套函数的基本用法

python
def outer_function():
    x = 10

    def inner_function():
        print(f"Inner function accessing outer variable: {x}")

    inner_function()

outer_function()  # 输出:Inner function accessing outer variable: 10

在这个例子中,inner_function 是在 outer_function 内部定义的,它可以访问外部函数 outer_function 中的变量 x。

闭包 (Closure)

闭包是指在函数内部定义的函数,它不仅可以访问外部函数的变量,还能“记住”外部函数的状态。

python
def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function

add_5 = outer_function(5)
result = add_5(3)  # 8
print(result)

在这个例子中,add_5 是一个闭包,它记住了 outer_function 的参数 x。调用 add_5(3) 时,它将 x 和 y 相加,返回结果 8。

嵌套函数的作用

嵌套函数可以用来组织代码,尤其在以下情况下非常有用:

  • 逻辑分隔:内嵌函数可以将特定的逻辑封装在外部函数内,避免污染全局命名空间。
  • 创建工厂函数:通过返回内嵌函数,允许动态生成可重用的函数。
python
def power(exponent):
    def raise_to_power(base):
        return base ** exponent
    return raise_to_power

square = power(2)
cube = power(3)

print(square(5))  # 25
print(cube(5))    # 125

在这个例子中,power 函数返回一个内嵌的 raise_to_power 函数,从而创建了两个不同的函数:square 和 cube。

总结

  • 返回值:函数可以通过 return 返回一个或多个值。如果没有 return,默认返回 None。
  • 函数嵌套:在一个函数内定义另一个函数,内嵌函数可以访问外部函数的变量,并且支持创建闭包。
  • 闭包:内嵌函数能够记住外部函数的状态,可以用于创建动态生成的函数或处理特定的任务。

理解返回值与函数嵌套将帮助你写出结构清晰、可扩展的 Python 代码,并提高代码的可维护性和复用性。