函数是 Python 中的基本构建块之一,用于组织代码、提高代码重用性和可读性。在 Python 中,函数是一段可以执行特定任务的代码块,函数可以接受输入(参数),并返回结果(输出)。通过函数,我们可以将复杂的任务分解为更小的部分,使代码更加模块化和可维护。
1. 引言
Python 中的函数允许我们将重复的代码逻辑封装起来,从而避免冗余代码的编写。Python 函数是非常灵活的,可以有不同的参数类型、返回值类型、默认参数等。
2. 函数定义
在 Python 中,定义一个函数非常简单,使用 def
关键字来定义函数。函数定义的基本语法如下:
def function_name(parameters):
# 执行的代码
return result
def
:声明函数。function_name
:函数的名字。parameters
:函数接受的输入,可以是零个、一个或多个参数。return
:函数的返回值。若不指定,函数默认返回None
。
示例:
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # 输出: Hello, Alice!
3. 参数
函数可以接受不同类型的参数,参数的使用灵活多样。
3.1 必需参数
必须传入的参数,参数的顺序是有要求的。
def add(a, b):
return a + b
print(add(3, 5)) # 输出: 8
3.2 默认参数
可以为参数指定默认值,调用时可以省略该参数。
def greet(name="Guest"):
print(f"Hello, {name}!")
greet() # 输出: Hello, Guest!
greet("Bob") # 输出: Hello, Bob!
3.3 可变参数
如果不确定传入函数的参数个数,可以使用 *args
来接受可变数量的位置参数,使用 **kwargs
来接收可变数量的关键字参数。
# *args 接收可变数量的位置参数
def sum_numbers(*args):
return sum(args)
print(sum_numbers(1, 2, 3)) # 输出: 6
# **kwargs 接收可变数量的关键字参数
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=25)
# 输出:
# name: Alice
# age: 25
4. 返回值
函数可以返回结果,使用 return
语句。一个函数只能返回一个值,但可以是一个复合数据类型(如列表、元组、字典等)。
4.1 返回单个值
def multiply(a, b):
return a * b
result = multiply(4, 5)
print(result) # 输出: 20
4.2 返回多个值
Python 支持通过元组返回多个值。
def calculate(a, b):
sum_result = a + b
diff_result = a - b
return sum_result, diff_result
sum_value, diff_value = calculate(10, 5)
print(sum_value, diff_value) # 输出: 15 5
5. 函数嵌套
函数可以在另一个函数内定义,这种方式叫做嵌套函数。嵌套函数可以访问外部函数的变量。
def outer_function(x):
def inner_function(y):
return y + 1
return inner_function(x)
result = outer_function(5)
print(result) # 输出: 6
6. 匿名函数(Lambda)
Python 提供了一个简洁的方式来定义简单的函数,叫做匿名函数。通过 lambda
关键字可以定义一个没有名字的函数。
6.1 Lambda 表达式
# 语法: lambda arguments: expression
add = lambda a, b: a + b
print(add(2, 3)) # 输出: 5
6.2 使用 Lambda 函数
lambda
函数常与 map()
、filter()
、sorted()
等函数一起使用:
# 使用 lambda 与 map() 函数
numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # 输出: [1, 4, 9, 16]
# 使用 lambda 与 sorted() 函数
people = [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}, {"name": "Charlie", "age": 20}]
sorted_people = sorted(people, key=lambda person: person["age"])
print(sorted_people)
# 输出: [{'name': 'Charlie', 'age': 20}, {'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]
7. 函数作用域
Python 中有三种作用域:
- 局部作用域(Local Scope):函数内部定义的变量。
- 嵌套作用域(Enclosing Scope):包含函数的外层函数的作用域。
- 全局作用域(Global Scope):脚本中所有函数外部定义的变量。
- 内建作用域(Built-in Scope):Python 内置的函数和变量。
7.1 示例:作用域
x = 10 # 全局变量
def outer_function():
y = 5 # 外部函数变量
def inner_function():
z = 2 # 内部函数变量
print(x, y, z) # 访问外部和全局变量
inner_function()
outer_function()
8. 函数装饰器
函数装饰器是 Python 中一个非常强大的功能,允许在不修改函数本身的情况下为函数添加额外的功能。
8.1 简单装饰器示例
def decorator(func):
def wrapper():
print("Before function call")
func()
print("After function call")
return wrapper
@decorator
def say_hello():
print("Hello!")
say_hello()
# 输出:
# Before function call
# Hello!
# After function call
9. 结论
通过函数,我们可以将复杂的任务拆分成更小的模块,从而使代码更具可读性和可维护性。Python 中的函数提供了非常灵活的参数处理、返回值以及嵌套、匿名函数等强大功能。理解并熟练使用函数是编写 Python 程序的基本能力之一。
发表回复