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

    上下文管理原理图

  • 相关阅读:
    我爱Java系列之---【SpringBoot打成war包部署】
    279. Perfect Squares
    矩阵dfs--走回路
    112. Path Sum
    542. 01 Matrix
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    Invert Binary Tree
    563 Binary Tree Tilt
    145 Binary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/adc8868/p/5948113.html
Copyright © 2011-2022 走看看