Python 函数的用法总结
在 Python 中,函数是组织和封装代码的基本单元,允许你将代码分解为可重复使用的模块。函数可以帮助提高代码的可读性、可维护性和复用性。以下是 Python 函数的常见用法总结:
1. 定义函数
使用 def
关键字来定义一个函数。函数可以接收零个或多个参数,并通过 return
语句返回一个值。如果没有 return
语句,函数将默认返回 None
。
示例:
def greet(name):
return f"Hello, {name}!"
print(greet("Alice"))
输出:
Hello, Alice!
2. 参数传递
函数可以接受不同类型的参数:
- 位置参数:按位置顺序传递给函数的参数。
- 默认参数:在定义函数时给定一个默认值,如果调用时未传递该参数,则使用默认值。
- 关键字参数:传递参数时通过名称指定。
- 可变参数:使用
*args
或**kwargs
传递可变数量的位置参数或关键字参数。
示例:位置参数、默认参数、关键字参数
def introduce(name, age=30):
print(f"Name: {name}, Age: {age}")
introduce("Alice") # 默认参数 age=30
introduce("Bob", age=25) # 使用关键字参数
输出:
Name: Alice, Age: 30
Name: Bob, Age: 25
示例:可变位置参数 (*args
)
def sum_numbers(*args):
return sum(args)
print(sum_numbers(1, 2, 3, 4)) # 10
示例:可变关键字参数 (**kwargs
)
def print_details(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_details(name="Alice", age=30)
输出:
name: Alice
age: 30
3. 返回值
函数可以返回一个值,也可以返回多个值(通过元组或其他数据结构)。
示例:返回单一值
def add(x, y):
return x + y
print(add(3, 4)) # 7
示例:返回多个值(通过元组)
def get_name_and_age():
return "Alice", 30 # 返回一个元组
name, age = get_name_and_age()
print(name, age) # Alice 30
4. 函数作用域
- 局部变量:函数内部定义的变量,只能在函数内部访问。
- 全局变量:在函数外部定义的变量,在函数内部可以访问。
如果需要在函数内修改全局变量,必须使用 global
关键字。
示例:局部变量和全局变量
x = 10 # 全局变量
def test():
x = 5 # 局部变量
print(f"Local x: {x}")
test()
print(f"Global x: {x}")
输出:
Local x: 5
Global x: 10
示例:修改全局变量
x = 10
def modify_global():
global x
x = 20
modify_global()
print(x) # 20
5. 匿名函数(Lambda 函数)
Lambda 函数是一个小型的匿名函数,使用 lambda
关键字定义。它通常用于定义简单的功能。
示例:Lambda 函数
# 定义一个求平方的 Lambda 函数
square = lambda x: x ** 2
print(square(5)) # 25
Lambda 函数常用于 map()
、filter()
和 sorted()
等函数中。
示例:Lambda 函数与 map()
numbers = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, numbers))
print(squares) # [1, 4, 9, 16]
好的,接着继续输出:
6. 递归函数(续)
递归函数是指函数直接或间接调用自身。递归通常需要一个基准情况来停止递归,以避免无限递归。
示例:计算阶乘
def factorial(n):
if n == 0: # 基本情况
return 1
else:
return n * factorial(n - 1) # 递归调用
print(factorial(5)) # 输出 120
输出:
120
解释:在此例中,factorial(5)
会调用 factorial(4)
,然后是 factorial(3)
,依此类推,直到 factorial(0)
返回 1,最后所有递归调用的结果都被乘起来得到最终的答案。
7. 函数装饰器(Decorator)
装饰器是 Python 中的一种函数,用来增强或修改其他函数的功能,常用于日志记录、权限验证、缓存等场景。装饰器使用 @
符号应用于目标函数。
示例:基本装饰器
def decorator(func):
def wrapper():
print("Before function execution")
func() # 调用被装饰函数
print("After function execution")
return wrapper
@decorator
def say_hello():
print("Hello, World!")
say_hello()
输出:
Before function execution
Hello, World!
After function execution
解释:在 @decorator
的作用下,say_hello()
函数被包装在 wrapper()
中,从而在执行 say_hello()
时,先打印"Before function execution",然后执行原始的 say_hello
,最后打印"After function execution"。
8. 内置函数与高级函数
Python 提供了许多内置函数,如 map()
、filter()
、reduce()
、zip()
、sorted()
等,它们可以与函数一起高效地处理数据。
示例:使用 map()
函数
map()
函数可以将指定函数应用到给定的可迭代对象(如列表)中的每个元素。
numbers = [1, 2, 3, 4]
squares = list(map(lambda x: x ** 2, numbers))
print(squares) # 输出 [1, 4, 9, 16]
示例:使用 filter()
函数
filter()
函数用于过滤掉不符合条件的元素。
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 输出 [2, 4, 6]
示例:使用 reduce()
函数
reduce()
函数来自 functools
模块,它将一个二元函数应用于序列的前两个元素,再将结果与序列中的下一个元素一起应用,直到遍历完所有元素。
from functools import reduce
numbers = [1, 2, 3, 4]
result = reduce(lambda x, y: x * y, numbers) # 计算所有元素的积
print(result) # 输出 24
9. 函数的高阶用法
Python 支持高阶函数,即接受函数作为参数或返回函数的函数。这种特性使得 Python 在处理回调函数、事件驱动编程以及函数式编程时非常强大。
示例:函数作为参数
def apply_function(func, x):
return func(x)
result = apply_function(lambda x: x ** 2, 5) # 应用平方函数
print(result) # 输出 25
示例:函数作为返回值
def multiplier(factor):
def multiply(x):
return x * factor
return multiply
double = multiplier(2)
print(double(5)) # 输出 10
好,这个模块还有很多可以讲,篇幅太大,剩下的下回讲解,敬请期待。。。