Python 中的函数是组织代码的一种重要方式。函数能够提高代码的复用性、可读性,并让程序结构更加清晰。函数的基本作用是将一段可复用的代码块封装成一个独立的模块,并且能够通过函数调用的方式在程序中多次使用。

1. 函数定义

在 Python 中,函数使用 def 关键字来定义。定义函数的基本语法如下:

def function_name(parameters):
    # 函数体
    return value
  • def 是定义函数的关键字。
  • function_name 是函数名,必须符合变量命名规则。
  • parameters 是函数的参数(可以是多个,也可以没有参数)。
  • return 语句用于返回函数的结果。

2. 函数的参数

函数可以接收零个或多个参数,参数是函数的一部分,用来传递信息给函数以便执行某些操作。

2.1 位置参数

最常见的参数形式,函数调用时根据位置顺序传递给函数。

def greet(name, age):
    print(f"Hello {name}, you are {age} years old.")

greet("Alice", 30)

2.2 默认参数

可以为函数的参数指定默认值,如果调用函数时没有传递对应的参数,则使用默认值。

def greet(name, age=18):
    print(f"Hello {name}, you are {age} years old.")

greet("Bob")  # 使用默认年龄 18
greet("Alice", 25)  # 使用传入的年龄 25

2.3 可变参数

Python 提供了 *args 和 **kwargs 来支持可变数量的参数。

  • *args:允许传递任意数量的位置参数,args 是一个元组。
  • **kwargs:允许传递任意数量的关键字参数,kwargs 是一个字典。
def example(*args, **kwargs):
    print(args)  # 输出元组
    print(kwargs)  # 输出字典

example(1, 2, 3, name="Alice", age=25)

3. 返回值

函数可以通过 return 返回结果。如果没有 return 语句,函数默认返回 None

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

result = add(3, 5)
print(result)  # 输出 8

4. 函数的作用域

函数中的变量有局部作用域,意味着它们只在函数内部可见。函数外的变量是全局作用域,外部无法访问函数内部的局部变量。

4.1 局部变量与全局变量

x = 10  # 全局变量

def foo():
    x = 5  # 局部变量
    print(f"Inside function: {x}")

foo()
print(f"Outside function: {x}")

输出:

Inside function: 5
Outside function: 10

4.2 global 关键字

使用 global 关键字可以在函数内部修改全局变量。

x = 10

def modify_global():
    global x
    x = 20

modify_global()
print(x)  # 输出 20

4.3 nonlocal 关键字

nonlocal 用于修改外层嵌套函数中的变量,而非全局变量。

def outer():
    x = 10

    def inner():
        nonlocal x
        x = 20

    inner()
    print(x)  # 输出 20

outer()

5. 递归函数

递归是指函数在其定义中调用自身。递归函数通常需要一个“基本情况”来终止递归,否则会无限循环。

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n - 1)

print(factorial(5))  # 输出 120

6. Lambda 函数

Lambda 函数(匿名函数)是一个简洁的函数形式,通常用于需要一个短小函数的场景。其基本语法是:

lambda arguments: expression

例如:

add = lambda x, y: x + y
print(add(3, 5))  # 输出 8

7. 函数注解

Python 提供了函数注解功能,可以给函数的参数和返回值添加类型提示。

def add(a: int, b: int) -> int:
    return a + b

print(add(3, 5))  # 输出 8

8. 内置函数

Python 提供了一些常用的内置函数,可以直接调用,例如:

  • len():返回对象的长度。
  • max():返回序列中的最大值。
  • min():返回序列中的最小值。
  • sum():返回序列中元素的和。
  • sorted():返回一个排序后的序列。

例如:

numbers = [1, 2, 3, 4, 5]
print(len(numbers))  # 输出 5
print(max(numbers))  # 输出 5

9. 函数的高阶特性

Python 中的函数支持一些高级特性,例如:

  • 函数可以作为参数传递给另一个函数。
  • 函数可以作为返回值。

例如:

def apply_function(func, x, y):
    return func(x, y)

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

print(apply_function(add, 3, 5))  # 输出 8

10. 总结

函数是 Python 编程中不可或缺的工具,它们帮助我们组织代码、提高代码的复用性。通过理解函数的定义、参数、返回值以及作用域等基本概念,可以使我们更好地利用函数进行编程。