1. 基本函数
在Python中,函数是通过def
关键字来定义的。一个函数可以接受参数,也可以返回一个结果。基本函数的定义格式如下:
def function_name(*args, **kwargs):
# 函数体
return result
示例:计算两个数的和
def add(a, b):
return a + b
result = add(5, 3)
print(result) # 输出:8
上述代码定义了一个名为add
的函数,它接受两个参数a
和b
,并返回它们的和。函数通过return
语句返回结果。
函数参数
Python中的函数参数有多种形式,包括位置参数、默认参数、可变参数和关键字参数。
位置参数
位置参数是最常见的类型,函数调用时,传入的参数顺序必须与定义时一致。
def greet(name, age):
print(f"Hello, {name}. You are {age} years old.")
greet("Alice", 30) # 输出:Hello, Alice. You are 30 years old.
默认参数
如果某个参数有默认值,则调用函数时可以省略该参数,默认参数必须放在参数末尾。
def greet(name, age=25):
print(f"Hello, {name}. You are {age} years old.")
greet("Bob") # 输出:Hello, Bob. You are 25 years old.
greet(name="Bob", age = 3) # 输出:Hello, Bob. You are 3 years old. 关键字参数
2. 高级函数
函数作为参数
在Python中,函数可以作为其他函数的参数传递。你可以将函数作为回调函数传递给其他函数。
def apply_function(f, value):
return f(value)
def square(x):
return x * x
result = apply_function(square, 4) # 输出:16
print(result)
在上面的例子中,apply_function
接受一个函数f
和一个值value
作为参数,并应用f
到value
上。
函数作为返回值
函数不仅可以作为参数,还可以作为返回值。这种技巧可以帮助我们实现更灵活的代码结构。
def outer():
def inner():
return "Hello from the inner function"
return inner
my_function = outer()
print(my_function()) # 输出:Hello from the inner function
在这个例子中,outer
函数返回了inner
函数,我们可以通过my_function
调用inner
函数。
3. 匿名函数(Lambda函数)
匿名函数(lambda
函数)是一个轻量级的函数定义方式,它不需要使用def
关键字,也不需要给函数命名。lambda
函数常用于短小的函数逻辑,通常作为其他函数的参数。
语法
lambda arguments: expression
示例:使用lambda
定义一个加法函数
add = lambda x, y: x + y
print(add(5, 3)) # 输出:8
lambda
函数常用于排序和映射
pairs = [(1, 2), (3, 1), (5, 4)]
sorted_pairs = sorted(pairs, key=lambda pair: pair[1])
print(sorted_pairs) # 输出:[(3, 1), (1, 2), (5, 4)]
在这个例子中,lambda
函数被用作sorted
函数的key
参数,用来根据元组的第二个元素对列表进行排序。
4. 偏函数(Partial Functions)
偏函数是通过固定函数的一些参数值来生成新的函数。Python的functools
模块提供了partial
函数来创建偏函数。偏函数常常用于减少冗长的函数调用,简化代码。
示例:使用partial
创建偏函数
from functools import partial
def multiply(x, y):
return x * y
# 创建一个新函数,固定x为2
double = partial(multiply, 2)
print(double(5)) # 输出:10
在上面的例子中,partial(multiply, 2)
创建了一个新的函数double
,它只接受一个参数y
,而x
的值始终为2。
5. 递归函数
递归函数是指函数调用自身的函数。在Python中,递归函数通常用于解决一些可以分解成相同子问题的问题,比如计算阶乘、斐波那契数列等。
示例:计算阶乘
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # 输出:120
在这个例子中,factorial
函数通过递归调用自身来计算一个数的阶乘。当n
等于1时,递归结束。