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被共享