python中上下左右的代码(python 上下文管理器:介绍上下文管理器的概念和作用,展示如何使用with语句来管理资源。)python初学 / python上下文管理器与with语句...

wufei123 发布于 2024-05-14 阅读(10)

点击蓝字立即关注上下文管理器是一种用于管理资源的机制,它提供了一种确保资源在使用完毕后被正确释放的方式上下文管理器通过定义`__enter__`和`__exit__`方法来实现资源的获取和释放在Python中,可以使用`with`语句来创建和使用上下文管理器。

`with`语句的语法如下:with 上下文表达式 as 变量:执行语句块当执行到`with`语句时,会调用上下文表达式的`__enter__`方法,将返回的对象赋值给变量然后执行语句块,无论语句块是否抛出异常,都会调用上下文表达式的`__exit__`方法来释放资源。

下面是一个使用文件对象作为上下文管理器的示例:withopen("file.txt", "r") asfile:contents = file.read()print(contents)在这个示例中,`open("file.txt", "r")`返回的文件对象被赋值给变量`file`,并在`with`语句块中使用。

当离开`with`语句块时,文件对象的`__exit__`方法会被调用,确保文件被正确关闭接下来,我将列举10个常见的`with`语句实用场景的代码示例:1. 文件操作:withopen("file.txt"

, "r") asfile:contents = file.read()print(contents)2. 网络连接:import socketwith socket.socket(socket.AF_INET, socket.SOCK_STREAM)

as s:s.connect(("example.com", 80))s.sendall(b"Hello, server!")data = s.recv(1024)print(data.decode())

3. 线程锁:importthreadinglock = threading.Lock()withlock:# 执行线程安全的操作pass4. 进程锁:importmultiprocessinglock

= multiprocessing.Lock()withlock:#执行进程安全的操作pass5. 数据库连接:import sqlite3with sqlite3.connect("database.db"

) asconn:cursor = conn.cursor()cursor.execute("SELECT * FROM users")rows = cursor.fetchall()forrowinrows

:print(row)6. 网络请求会话:import requestswith requests.Session() as session:response = session.get("https://example.com"

)print(response.text)7. 图形界面资源:import tkinter as tkroot = tk.Tk()with root:# 执行图形界面操作pass8. 串口通信:import

serialwith serial.Serial("/dev/ttyUSB0", 9600) as ser:ser.write(b"Hello, serial!")response = ser.readline()

print(response.decode())9. 临时目录:import tempfilewith tempfile.TemporaryDirectory() as temp_dir:# 在临时目录中进行操作

pass10. 图像处理:from PIL import Imagewith Image.open("image.jpg") as img:img.show()这些示例展示了使用`with`语句管理资源的常见场景,你可以根据实际需求和场景,进一步调整和扩展这些示例代码。

通过使用上下文管理器,可以确保资源的正确获取和释放,提高代码的可读性和可维护性

上方商品有需要的话,感谢购买支持一下给作者以更大的动力,发更多优秀的文章‍

点赞、关注、分享

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

大众 新闻80342