python学习之with...as语句
python中的with...as...语句类似于try...finally...语句:
# -*- coding: utf-8 -*-
#
"""
with...as...语句
"""
#try...finally...语句
f = open('data.txt')
try:
data = f.read()
print(data)
finally:
f.close()
#with...as...语句
with open('data.txt') as f:
data = f.read()
print(data)
hello,leo! hello,leo! [Finished in .1s]
从上面可以看出,with...as语句看起来更为简洁。
原理
1.表达式执行并返回一个对象A
2.对象A调用__enter__()
3.__enter__()将返回对象B赋值给变量C
4.等表达式全部执行完毕,对象A调用__exit__()方法
下面来看一个例子:
# -*- coding: utf-8 -*-
#
"""
with...as...语句
"""
class Example:
def __enter__(self):
print('In__enter__()')
return "Over!"
def __exit__(self,*args):
print('In__exit__()')
return "Exit!"
def get_example():
return Example() with get_example() as example:
print(example)
结果:
In__enter__()
Over!
In__exit__()
[Finished in .1s]
分析:
1.表达式get_example()执行并返回对象Example()
2.对象Example()调用__enter__()方法
3.__enter__()方法将返回对象"Over!"赋值给变量example
4.对象Example()调用__exit__()方法
python学习之with...as语句的更多相关文章
- 【Python学习笔记】with语句与上下文管理器
with语句 上下文管理器 contextlib模块 参考引用 with语句 with语句时在Python2.6中出现的新语句.在Python2.6以前,要正确的处理涉及到异常的资源管理时,需要使用t ...
- Python 学习笔记9 循环语句 For in
For in 循环主要适用于遍历一个对象中的所有元素.我们可以使用它遍历列表,元组和字典等等. 其主要的流程如下:(图片来源于: https://www.yiibai.com/python/pytho ...
- Python 学习笔记8 循环语句 while
While循环是哟中利用条件语句,不断的执行某一段代码块,达到批量操作输出等一系列的操作,直到条件不满足或者被强制退出为止. 其工作流程如下: (图片来源菜鸟教程:http://www.runoob. ...
- Python 学习笔记7 条件语句 If
Python中条件语句if 是通过一条或者多条的执行语句的结果,来判断是否执行其包含的代码块. 通常会配合else.elif一起使用,达到根据条件进行多个代码块的执行操作. 简单的if score = ...
- python学习笔记-基础、语句、编码、迭代器
#python的优缺点优点:Python简单优雅,尽量写容易看明白的代码,尽量写少的代码.缺点:第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地 ...
- Python学习记录4(语句)
赋值语句 序列解包 条件语句 语句块 布尔变量 条件执行和if语句 条件运算符 循环 while语句 for循环 迭代工具 跳出循环 break continue while truebreak语句 ...
- python学习笔记2-条件语句
#条件语句 ''' if 判断条件: 执行语句…… else: 执行语句…… ''' flag = False name = 'python' if name == 'python': # 判断变量否 ...
- python学习:利用循环语句完善输入设置
利用循环语句完善输入设置 使用for循环: 代码1:_user = "alex"_password = "abc123" for i in range(3): ...
- python学习day4 数据类型 if语句
1.变量的内存管理 cpython解释器垃圾回收机制 什么是垃圾,当一个值身上没有绑定变量名时,(该值的引用计数=0时)就是一个垃圾 age=18 #18的引用计数=1 x=age #18的引用计数 ...
随机推荐
- Oracle session active 和 inactive 状态 说明
Oracle session active 和 inactive 状态 说明 原创 2011年06月12日 13:08:00 标签: session / oracle / database / ser ...
- Android开发高级进阶——多进程间通信
一. 什么是多进程? 多进程就是多个进程的意思,那么什么是进程呢? 当一个应用在开始运行时,系统会为它创建一个进程,一个应用默认只有一个进程,这个进程(主进程)的名称就是应用的包名. 进程的特点: 进 ...
- [转]SSIS数据转换组件_派生列、审核、字符映射转换和条件性拆分转换
本文转自:http://www.cnblogs.com/gudujianxiao/archive/2012/04/14/2446925.html 一 派生列 派生列转换通过对输入列进行类型转换或应用表 ...
- shadow mapping实现动态shadow实现记录 【转】
http://blog.csdn.net/iaccepted/article/details/45826539 前段时间一直在弄一个室内场景,首先完成了render,效果还可以.然后给其加上shado ...
- ShopNC B2B2C多用户商城2014商业版,带微商城
据说价值7000RMB,咱们好站长资源网友分享出来的,非常感谢分享这么好的源码.此套ShopNC B2B2C多用户商城源码是2014版的,带有微商城,源码我们安装测试基本没发现啥问题,这两天将会完全免 ...
- javascript 中用到的时间戳函数
JavaScript 获取当前时间戳:第一种方法: var timestamp = Date.parse(new Date()); 例如结果:1280977330000第二种方法: var times ...
- Windows Vista如何让梦幻桌面支持更多格式
Windows Vista 梦幻桌面(DreamScene)到底能不能支持除了Mpeg/mpg以外的格式? 很多人说梦幻桌面的视频格式有限,像AVI.RM.RMVB就不能做成梦幻桌面!也有很多朋友着急 ...
- atitit.微信支付的教程文档 attilax总结
atitit.微信支付的教程文档 attilax总结 1. 支付流程概览 1 2. 设置支付起始文件夹 host/app/paydir/ 1 3. 设置oauth验证域名 1 4. 測试文件夹 能 ...
- ffmpeg与TS
http://blog.csdn.net/shuyong1999/article/details/7176329 一个不错的音视频博客 0. 简介 FFmpeg是一个集录制.转换.音/视频编码解码功能 ...
- Ubuntu编码问题
Ubuntu编码问题 root@magus-18:/srv/rorapps/fgcc# rails -v Sorry, command-not-found has crashed! Please fi ...