循環加上數字索引
for i,x in enumerate(s):
statements
zip()的用法:
for x,y in zip(s,t):#一次性生成元祖清單
statements
for x,y in itertools.zip(s,t):#一次生成一個元祖
statements
continue 和break 隻是應用于正在執行的最内層循環,跳出多層循環,可以使用異常。
continue對于處理文本時跳過空行很實用。
異常程式可以同時捕捉多個異常
try:
do something
except (IOError, TypeError, NameError) as e:
#處理錯誤
定義新異常
class DeviceError(Exception):
def __init__(self,errno,msg):
self.args = (errno, msg)
self.errno = errno
self.errmsg = msg
with語句需要對象支援上下文管理協定(__enter__() 和__exit__() )
class ListTransaction(object):
def __init__(self,thelist):
self.thelist = thelist
def __enter__(self):
self.workingcopy = list(self.thelist)
return self.workingcopy
def __exit__(self):
if type is None:
self.thelist[:] = self.workingcopy
return False
通過包裝生成器 contextlib 實作上下文管理器
from contextlib import contextmanager
@contextmanager
def ListTransaction(thelist):
workingcopy = list(thelist)
yield workingcopy
thelist[:]=workingcopy
__debug__ assert 和 python -O選項
-O選項可以忽略assert ,if __debug__等語句