Easton's Blog Easton's Blog
首页
  • 编程语言

    • Python
  • 框架

    • Django
  • Mdn (opens new window)
  • HTML
  • CSS
  • JavaScript
  • Mysql
  • PostgreSQL
  • Elasticsearch
  • MongoDB
  • Redis
  • 服务器命令
  • Docker
  • GIT
  • 摄影
  • 草稿
  • 归类方式

    • 分类
    • 标签
    • 归档
  • 关于博客

    • 博客教程
    • 友情链接
    • 关于
导航站
GitHub (opens new window)

Easton Yang

爱生活😊爱学习
首页
  • 编程语言

    • Python
  • 框架

    • Django
  • Mdn (opens new window)
  • HTML
  • CSS
  • JavaScript
  • Mysql
  • PostgreSQL
  • Elasticsearch
  • MongoDB
  • Redis
  • 服务器命令
  • Docker
  • GIT
  • 摄影
  • 草稿
  • 归类方式

    • 分类
    • 标签
    • 归档
  • 关于博客

    • 博客教程
    • 友情链接
    • 关于
导航站
GitHub (opens new window)
  • Python

    • Python学习

      • 特殊方法
      • 常用内置函数
      • 数据类型
      • with用法
        • with 的实现方式
      • Python面向对象
      • re正则
      • 线程
      • 进程
      • 协程
      • 装饰器
      • 堆队列heapq
      • 容器collections
      • 内置异常
      • 枚举
      • 好玩的函数
    • 代码

    • 数据结构与算法

  • Django

  • 后端
  • Python
  • Python学习
eastonyangxu
2023-09-04
目录

with用法

提示

with 语句上下文管理器

上下文管理器是一个对象,它定义了在执行 with 语句时要建立的运行时上下文。

上下文管理器处理进入和退出所需运行时上下文以执行代码块。

通常使用 with 语句(在 with 语句 中描述),但是也可以通过直接调用它们的方法来使用。

上下文管理器的典型用法包括保存和恢复各种全局状态,锁定和解锁资源,关闭打开的文件等等。

# with 的实现方式

class MyOpen(object):
    def __init__(self, name):
        self.name = name
    # 进入运行时上下文并返回此对象或关联到该运行时上下文的其他对象。 此方法的返回值会绑定到使用此上下文管理器的 with 语句的 as 子句中的标识符
    def __enter__(self):
        print('进入了enter,在这里可以做一些初始化工作')
        return self  # 返回对象给as字句调用
    def do_something(self):
        print("这是自己的业务逻辑,输入的name:{}".format(self.name))
    # 退出关联到此对象的运行时上下文。 各个参数描述了导致上下文退出的异常。 如果上下文是无异常地退出的,三个参数都将为 None。
    # 如果提供了异常,并且希望方法屏蔽此异常(即避免其被传播),则应当返回真值。 否则的话,异常将在退出此方法时按正常流程处理。
    # 请注意 __exit__() 方法不应该重新引发被传入的异常,异常会导致exit不会被完整的执行,导致代码出现未知错误。
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('退出了,在这里可以做一些关闭、解锁工作。三个参数分别是异常类、异常值、异常信息追踪。')
        print('exc_type: ', exc_type)
        print('exc_val: ', exc_val)
        print('exc_tb: ', exc_tb)

with MyOpen('test') as m:
    m.do_something()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#Python
上次更新: 2023/09/04, 18:39:45
数据类型
Python面向对象

← 数据类型 Python面向对象→

最近更新
01
攻略制作要点
07-18
02
摄影主题拍摄
07-18
03
延时摄影剧本
07-18
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Easton Yang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式