zoukankan      html  css  js  c++  java
  • Python上下文管理器with 学习笔记

    Python上下文管理器with 学习笔记

    with 这个关键字,很多人应该都用这个关键打开过文件,如下面的例子

    with open('test.txt','r',encoding:"utf8") as f:
        print(f.readlines())
    

    如何写上下文管理器

    想要自己实现一个类似于上面例子的上下文管理器,我们需要了解上下文管理器的组成部分,示例如下

    # 数据库连接类
    class database_connect():
        def __enter__(self):
            print("数据库连接成功")
            return self
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            print("断开数据库连接")
    
        def insert_data(self,a):
            print(f"插入数据:{a}")
            
    # 使用方法
    with database_connect() as db:
        db.insert_data(111)
        
    # 输出结果
    数据库连接成功
    插入数据:111
    断开数据库连接
    
    1. with 上下文管理器中必须得有__enter____exit__ 这两个方法,__enter__ 是执行方法的前提,也可以理解为入口,__exit__ 是退出时要执行的操作

    2. 除了这两个方法以外,insert_data 是我们实现的操作数据库的方法,我们可以根据实际情况编写多个,比如删除数据,查询数据等

    3. 如何使用参考代码中的使用方法

    4. 根据输出结果,我们可以看出他的执行顺序

      1. 是执行__entry__()进行数据库连接,返回数据库连接对象

      2. 利用数据库连接对象插入数据

      3. 数据插入后调用__exit__()断开数据库连接

    上下文管理器一般的使用场景

    1. 数据库连接,可以自动关闭数据库连接
    2. 文件操作
    3. 网络连接 等等
  • 相关阅读:
    对于EMC DAE、DPE、SPE、SPS的解释
    linux用户添加组
    do_group_exit函数
    bpf移植到3.10
    网络中的GSO分段,整个tcp/ip协议栈中都哪里发生了分段
    发送tcp的时候,数据包是如何拷贝的
    安装llvm
    怎么打印lua的函数调用栈
    调度的log 1.5ms 12ms 4ms
    显示两个文本的差异:强大的grep
  • 原文地址:https://www.cnblogs.com/jruing/p/15126997.html
Copyright © 2011-2022 走看看