Skip to main content

Python 函数

Python 函数

本章节主要讲解 Python 函数概念,函数定义,函数调用,空函数,返回多个值的函数,函数参数检查,函数参数,递归函数,函数的注意事项。每个部分都配有完整的代码示例,帮助你理解和实践。

1. 引入函数概念

函数是一段可以重复使用的代码块,用于完成特定任务。它可以接受输入(称为参数),执行操作,并返回输出(称为返回值)。使用函数的好处包括提高代码的模块化、可读性和可维护性。例如,我们可以用函数来封装问候逻辑,避免重复编写相同的代码。

2. 函数定义

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

  • def后跟函数名和括号中的参数列表。
  • 函数体缩进编写。
  • 使用return语句返回结果,若无return,函数默认返回None

示例:

def greet(name):
    return f"Hello, {name}!"

print(greet("Alice"))  # 输出: Hello, Alice!

3. 函数调用

定义函数后,通过函数名和参数调用它。调用时需要提供与定义时匹配的参数。

示例:

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

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

4. 空函数

有时我们需要占位函数,可以使用pass语句定义空函数,表示暂不实现具体逻辑。

示例:

def do_nothing():
    pass

do_nothing()  # 调用空函数,不执行任何操作

5. 返回多个值的函数

Python允许函数返回多个值,实际上返回的是一个元组。可以用多个变量接收返回值,也可以通过解包直接使用。

示例:

def get_position():
    x = 10
    y = 20
    return x, y

pos = get_position()
print(pos)  # 输出: (10, 20)

x, y = get_position()
print(x)    # 输出: 10
print(y)    # 输出: 20

6. 函数参数检查

为了确保函数接收正确的参数,可以使用isinstance检查类型,或抛出异常提示用户。

示例:

def add(a, b):
    if not isinstance(a, (int, float)) or not isinstance(b, (int, float)):
        raise TypeError("参数必须是数字")
    return a + b

print(add(1, 2))  # 输出: 3
# print(add("1", 2))  # 会抛出TypeError

7. 函数参数

Python支持多种参数类型,包括 位置参数、默认参数、可变参数、关键字参数、命名关键字参数,这些参数定义类型都对应着不同的场景,在下一章节我们会详细讲解。

8. 递归函数

递归函数在内部调用自身,需设置递归结束条件以终止递归。

示例:计算阶乘

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

print(factorial(5))  # 输出: 120

9. 函数的注意事项

  • 命名:函数名应描述其功能,遵循小写加下划线规范。
  • 全局变量:避免使用全局变量,优先通过参数和返回值传递数据。
  • 默认值:默认值应为不可变对象,避免使用列表等可变对象。
  • 递归深度:注意Python的递归深度限制(默认1000),避免栈溢出。

示例:避免可变默认值问题

def append_to_list(item, lst=None):
    if lst is None:
        lst = []
    lst.append(item)
    return lst

print(append_to_list(1))  # 输出: [1]
print(append_to_list(2))  # 输出: [2]

# 错误示例
def wrong_append_to_list(item, lst=[]):
    lst.append(item)
    return lst

print(wrong_append_to_list(1))  # 输出: [1]
print(wrong_append_to_list(2))  # 输出: [1, 2],lst被共享