zoukankan      html  css  js  c++  java
  • 第五十八节,上下文管理

    上下文管理

    上下文管理就是在执行一段代码块的时候,通过一个装饰器函数,在执行代码块之前到装饰器函数里做一个操作,然后执行代码块,执行代码块之后再到装饰器函数里做另外一个操作

    要使用上下文管理首先要 import contextlib   导入上下文管理模块

    @contextlib.contextmanager 定义上下文管理装饰器,写在下文管理装饰器函数上面

    yield 遇到yield,跳出装饰器函数,执行代码块后,在回到yield这里向下执行

    with 执行上下文管理装饰器,后面写要执行的下文管理装饰器名称,里面写代码块

    上下文管理使用代码

    #!/usr/bin/env python
    # -*- coding:utf8 -*-
    import contextlib   #导入上下文管理模块
    
    a = "1"
    b = "2"
    @contextlib.contextmanager #定义上下文管理装饰器
    def f(a,b): #定义上下文管理装饰器函数,设置形式参数来接收实际参数
        print("执行代码块之前,操作",a) #执行代码块之前打印
        try:
            yield   #遇到yield,跳出装饰器函数,执行代码块后,在回到yield这里向下执行
        finally:
            print("执行代码块之后,操作",b) ##执行代码块之后打印
    
    with f(a, b): #执行下文管理装饰器函数,传入实际参数
        print("执行代码块")
    
    # 输出
    # 执行代码块之前,操作 1
    # 执行代码块
    # 执行代码块之后,操作 2

    上下文管理原理图

  • 相关阅读:
    蓝牙的AVDTP协议笔记
    蓝牙的AVCTP协议笔记
    hosts学习整理
    Win10报错0x800f0906
    Git Bash的妙用
    将xml文件由格式化变为压缩字符串
    try-with-resource机制的一个编译陷阱
    Git回滚代码暴力法
    IDEA中Git分支未push的变更集如何合并到另一个分支
    日期类型存储成字符串类型的格式问题
  • 原文地址:https://www.cnblogs.com/adc8868/p/5948113.html
Copyright © 2011-2022 走看看