Python 函数式编程:
Python 函数式编程是一种编程范式,它强调将计算看作是一组数学函数的评估。Python 的函数式编程支持函数是对象,函数闭包,递归等。
函数是Python语言中的一等公民,函数式编程利用Python中函数的这个特性来实现非常强大的功能。
以下是Python函数式编程的使用方法:
1.高阶函数:
Python中的高阶函数可以接受函数为参数,或者返回函数作为结果。使用高阶函数可以实现多种功能。例如,map(), filter(), reduce()。
其中,map()函数可以将一个函数作用于列表的每一个元素,然后返回所有的结果,filter()函数可以利用一个函数对列表进行过滤处理,reduce()函数可以利用一个函数和一个列表来实现一个累加操作。
比如,我们有一个列表,需要将其中的所有元素转化成整型并求和,可以这样实现:
list = ['1', '2', '3', '4', '5']
result = reduce(lambda x, y: x + y, map(int, list))
print(result)
输出结果为:15
2.函数闭包:
函数闭包是指在函数内部定义了一个新的函数,并将其作为函数的返回值,这个新的函数可以访问外部函数的变量。利用闭包可以实现很多功能。例如,装饰器。
比如,我们有一个函数,需要在函数执行前和执行后打印一些信息,可以这样实现:
def log(func):
def wrapper(*args, **kw):
print('call %s():' % func.__name__)
return func(*args, **kw)
return wrapper
@log
def now():
print('2022-02-22')
now()
输出结果为:
call now():
2022-02-22
并发编程:
Python 中的并发编程指的是同时处理多个任务。Python提供了许多模块来实现并发编程,例如 threading, multiprocessing, asyncio 等。
以下是Python并发编程的使用方法:
1.线程:
Python 中的 threading 模块是线程相关的模块,提供了线程管理类,其中包括:
- Thread:表示一个执行线程的对象。
- Lock:提供了一个简单的锁定机制来避免线程之间的竞争。
- RLock:可重入锁定,可以被同一线程多次获得。
- Condition:使用条件变量可以在某些事件触发时直接通知等待线程。
- Semaphore:用来控制对共享资源的访问数量。
- Event:线程间的事件通信,一个线程发送信号,其他线程等待信号状态改变。
比如,我们有一个计算函数和一个打印函数,需要同时执行,可以这样实现:
import threading
def add():
sum = 0
for i in range(1, 11):
sum += i
return sum
def print_result():
result = add()
print('result is %d' % result)
t1 = threading.Thread(target=add)
t2 = threading.Thread(target=print_result)
t1.start()
t2.start()
t1.join()
t2.join()
输出结果为:
result is 55
2.协程:
Python 中的 asyncio 模块实现了协程的支持。协程是一种用户态的轻量级线程,可以比真正的线程更高效地解决问题。
asyncio 模块提供了三个对象用于协程的实现:
- coroutine:定义协程的装饰器,将普通函数装饰成协程函数。
- event_loop:实现事件循环处理 IO 事件,以及通过 add_task 函数把协程加入到事件循环中运行。
- future:协程返回结果或者触发异常后,它会用 future 把这个结果传递给主程序。
比如,我们有一个请求函数和一个打印函数,需要同时执行,可以这样实现:
import asyncio
async def request():
print('request start')
await asyncio.sleep(2)
print('request end')
def print_result():
print('print start')
print('print end')
tasks = [request(), print_result()]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))
输出结果为:
request start
print start
request end
print end
以上就是Python函数式编程和并发编程的使用方法和示例说明。