例子

with open(r'somefileName') as somefile:

for line in somefile:

print line

with 语句的语法

with [as ]:

什么语句可以作为, 变量是在哪里定义的呢?

应该返回一个上下文管理器,所谓上下文管理器就是任何一个实现了__enter__(self),和__exit__(self, *unused)方法的class的实例.

在__enter__(self)对象中返回的内容会被赋值给变量

直接用类进行构造的构造函数

class PypixContextManagerDemo:

def __enter__(self):

print 'Entering the block'

def __exit__(self, *unused):

print 'Exiting the block'

with PypixContextManagerDemo():

print 'In the block'

也可以用工厂方法建立

以MySQLdb为例,通常是调用MySQLdb.Connect方法建立的Connection的实例的.而在MySQLdb中Connect方法是这样实现的.

def Connect(*args, **kwargs):

"""Factory function for connections.Connection."""

from MySQLdb.connections import Connection

return Connection(*args, **kwargs)

而在Connection类中实现了__enter__(self),和__exit__(self, *unused)方法

class Connection(_mysql.connection):

.....................

def __enter__(self):

if self.get_autocommit():

self.query("BEGIN")

return self.cursor()

def __exit__(self, exc, value, tb):

if exc:

self.rollback()

else:

self.commit()

注意__enter__方法直接返回了cursor对象,因此as后跟的就是一个cursor对象

with MySQLdb.connect(kwargs=Mysqldb_kwargs) as ins_cursor:

ins_cursor.execute('select * from user')

python with关键字_python中用with关键字来实现上下文管理器.相关推荐

  1. python教程:上下文管理器详细教程

    我想你对 Python 中的with语句一定不陌生,尤其是在文件的读写操作中,不过我想,大部分人可能习惯了它的使用,却并不知道隐藏在其背后的"秘密". 那么,究竟with语句要怎么 ...

  2. python用于声明类的关键字_python的with关键字

    前言 with表达式其实是try-finally的简写形式.但是又不是全相同. 格式 """ 格式 with context [as var]: pass "& ...

  3. python上下文管理关键字_详解 Python 中的 with 与 上下文管理器

    with 这个关键字,对于每一学习Python的人,都不会陌生. 操作文本对象的时候,几乎所有的人都会让我们要用 with open ,这就是一个上下文管理的例子.你一定已经相当熟悉了,我就不再废话了 ...

  4. python with关键字_完全理解Python关键字with与上下文管理器

    如果你有阅读源码的习惯,可能会看到一些优秀的代码经常出现带有 "with" 关键字的语句,它通常用在什么场景呢?今天就来说说 with 和 上下文管理器. 对于系统资源如文件.数据 ...

  5. python上下文管理关键字_理解 Python 的上下文管理器

    任何 Python 教程,必然会讲解如何打开一个文件.而任何提到打开文件的地方,都必然会推荐用 with 来操作文件的读写.比如说这里有一篇非常优秀的教程,文中提到在 Python 中,文件读写是通过 ...

  6. python的上下文管理用哪个关键字_正确理解python中的关键字“with”与上下文管理器...

    正确理解python中的关键字"with"与上下文管理器 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  正确理解python中的关键字&quo ...

  7. python 多态 锁_python 上下文管理器,多态,数据锁定与自省,

    python 上下文管理器,多态,数据锁定与自省, 前文课题 通过装饰器来实现单例模式 通过类实现一个通用装饰器,皆可以装饰函数也可装饰类,即可有参也可无参 描述 new str repr call ...

  8. python语言使用什么语句实现上下文管理协议_Python 技巧探究:上下文管理器和with语句...

    一:前言 Python 里面的 with 语句是被认为是晦涩难懂的特征之一,但是当你窥视它的内部你就会发现这里面并没有什么魔法.事实上它可以帮助我们写一些整洁和可读性高的代码. 那么 with 语句适 ...

  9. python语言使用什么语句实现上下文管理协议_Python with语句上下文管理器两种实现方法分析...

    本文实例讲述了Python with语句上下文管理器.分享给大家供大家参考,具体如下: 在编程中会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作:当语句块执行完成后, ...

最新文章

  1. svn官方备份hot-backup.py强烈推荐
  2. Java List部分截取,获得指定长度子集合
  3. 【直播预告 | 阿里云 CDP 公开课】11月25日下午14点准时开讲
  4. CSS3+JS切割轮播图
  5. EPSON 机器人多任务下的互锁处理
  6. 超出了GC开销限制– Java堆分析
  7. 阿里资深技术专家的10年感悟
  8. ocm认证年薪多少_从复读才考上三本,到华为201万年薪的天才少年,他经历了什么?...
  9. 网上偶看一文,有感。特贴在下面。
  10. 数据库优化之MySQL
  11. 88se9230 linux raid,Gen10磁盘控制器Marvell 88SE9230阵列RAID设置方法教程图文
  12. 为驾驶安全护航,基于目标检测模型实现驾驶疲劳检测
  13. python画玫瑰曲线_「风向玫瑰图」python绘制风向玫瑰图和污染物玫瑰图 - seo实验室...
  14. 个推华为推送、小米推送、苹果推送及角标
  15. CommonAPI 使用说明文档
  16. PS入门(1-7) HSB色彩模式
  17. 图片扩展名如何修改,转换图片格式轻松搞定
  18. react-native 报错Cannot add a child that doesn't have a YogaNode to a parent without a measur
  19. java实现word、pdf、excel文件下载功能
  20. 恶意url_预测URL的恶意

热门文章

  1. Win11体验——该来的来了,该走的没走,不该走的走了
  2. springboot--多环境
  3. 2018级软件秋季总结
  4. console输出彩色字体
  5. c/c++ 数组和指针
  6. new jQuery.common
  7. 【python工具篇】pip和pypi
  8. .net找List1和List2的差集
  9. 高清方法生成缩略图函数
  10. 为什么mysql没有io多路复用_Redis凭啥可以这么快