对字符串translate的封装
预备知识
函数闭包
def line_conf():
def line(x):
return 2*x+1
return line #返回的是一个函数对象
t = line_conf()
print t(4)#结果是9
函数闭包常用于装饰器,作用是为了避免频繁修改函数
封装
def translator(frm = '', to = '', delete = '', keep = None):
if len(to) == 1:
to = to * len(frm)
trans = string.maketrans(frm, to)
if keep is not None:
allchars = string.maketrans('','') #设定一个转换列表
delete = allchars.translate(allchars, keep.translate(allchars, delete))
def translate(s):
return s.translate(trans, delete)
return translate
digits_only = translator(keep=string.digits)
print digits_only('cardNum = 10330303303030')
digits_only = translator(delete=string.digits)
print digits_only('cardNum = 10330303303030')
delete = allchars.translate(allchars, keep.translate(allchars, delete)) 看的不是太明白
封装后的方法可以直接使用