Python with的用法,Pythonwith用法


在Python中,with关键字是一个替你管理实现上下文协议对象的好东西。例如:file等。示例如下:
  

from __future__ import with_statement 
with open('cardlog.txt','r') as item : 
  for line in item : 
    print line; 

 
 在file的结束,会自动关闭该文件句柄。
 
在python2.6中,with正式成为了关键字
所以在python2.5以前,要利用with的话,需要使用:

from __future__ import with_statement 

 
 它的原理如下:
所有实现上下文协议的对象都包含以下三种方法:
__context__()  它返回一个自我管理的上下文对象,或者一个真正意义的上下文管理器
 
__enter()__  进入上下文管理器,开始迭代
 
当with语句结束的时候,无论是正常结束还是抛出异常,都会执行__exit__(),该方法用于关闭资源连接。


python withas

with open('abc.txt', 'r') as f:
balabalabala

等价于
try:
f = open('abc.txt', 'r')
except:
pass
else:
balabalabala
finally:
f.close()
语法是不是简洁多了?
 

对于python 的while的用法

L=[1,2,4,8,16,32,64] #定义一个列表
x=5 #把5赋予x(这样x是全局的)
found=i=0 #把0赋予found和i
while not found and i<len(L): (这句完全不懂)### 意思如果found为假且i的值在L的长度之内,就循环
if 2**x==L[i]: (L[i]是什么意思)### L[i]代表取L的第i个值,L[0]就是1,L[2]就是4,L[3]得8
found=1 (不懂)### 给变量found赋值1
else:
i=i+1 (这个我遇到多次了,有点不明白)### 意思是 i增1,执行前如果i为1,执行后i就等于2
if found: (found有是什么)### 如果i为真(不等于0就是真),就打印下面的
print 'at index', i #输出字符串‘at index’和i人值
else: ### 如果i为假
print x, 'not found ' #输出x的值和字符串'not found'
 

评论关闭