這是來自'python cookbook',但沒有解釋得很好。爲一組字符過濾字符串
allchars = string.maketrans('','')
def makefilter(keep):
delchars = allchars.translate(allchars, keep)
def thefilter(s):
return s.translate(allchars,delchars)
return thefilter
if __name__ == '__main__':
just_vowels = makefilter('aeiou')
print just_vowels('four score and seven years ago')
print just_vowels('tigere, igers, bigers')
我的問題是,過濾器的'如何作爲參數傳入?
ahhh ...所以該過濾器不運行在初始的makerfilter。它等待稍後被調用... – shawn 2010-09-29 15:14:31
正確。 'makefilter'正在創建一個「閉包」,它是一個函數,「稍後等待被調用」,並且還帶有它在創建時獲得的一些狀態(在這種情況下爲'delchars' )。 – RichieHindle 2010-09-29 15:18:16