Python的高级函数:lambda表达式和装饰器
Python语言中,高级函数是一种非常有用的编程工具。其中,lambda表达式和装饰器是高级函数的两个最常见的应用。
一、lambda表达式
lambda表达式是一种匿名函数,可以在程序中快速定义简单的函数。它的语法如下:
lambda 参数列表 : 表达式
其中,参数列表可以是以下三种形式之一:
1. 无参数:lambda : 表达式
2. 一个参数:lambda 参数 : 表达式
3. 多个参数:lambda 参数1, 参数2, ..., 参数N : 表达式
举个例子,我们来创建一个简单的lambda表达式:
f = lambda x: x + 2
这个lambda表达式名为f,它接受一个参数x,并返回x+2的值。我们可以调用这个函数来验证它的功能:
print(f(3)) # 输出5
除了可以赋值给变量之外,lambda表达式还可以作为参数传递给其他函数。例如,下面的代码将一个列表按照每个元素的长度进行排序:
lst = ["Python", "Java", "JavaScript", "C"]
lst.sort(key=lambda s: len(s))
print(lst) # 输出 ['C', 'Java', 'Python', 'JavaScript']
二、装饰器
装饰器是一种用于修改其他函数行为的高级函数。它可以接收一个函数为参数,并返回一个新的函数,用于增强原始函数的功能。
装饰器的语法如下:
@decorator
def function():
...
其中,decorator是一个装饰器函数,它实际上是一个用于修改函数行为的函数。
下面是一个简单的装饰器示例,用于记录一个函数的执行时间:
import time
def timeit(func):
def wrapper(*args, **kwargs):
t1 = time.time()
result = func(*args, **kwargs)
t2 = time.time()
print("%s函数执行时间为 %.2f 秒" % (func.__name__, t2 - t1))
return result
return wrapper
@timeit
def test():
time.sleep(1)
return 1
test()
这个例子中,我们定义了一个装饰器函数timeit,它接收一个函数为参数,并返回一个新的函数wrapper。wrapper函数使用time模块记录函数执行时间,并打印输出。最后,我们使用@timeit语法将test函数装饰器。
可以看到,当调用test函数时,装饰器会自动记录函数的执行时间,并输出结果。
总结
在Python语言中,高级函数是一种非常有用的编程工具。其中,lambda表达式和装饰器是高级函数的两个最常见的应用。lambda表达式是一种匿名函数,可以在程序中快速定义简单的函数。装饰器是一种用于修改其他函数行为的高级函数,它可以接收一个函数为参数,并返回一个新的函数,用于增强原始函数的功能。通过掌握lambda表达式和装饰器的基本用法,可以轻松地提高Python语言的编程效率。
