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)) 看的不是太明白
封裝後的方法可以直接使用
挑戰字串 簡化路徑
以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱 linux unix中的絕對路徑 vs 相對路徑 ...
微軟演算法面試 19 左旋字串
題目 定義字串的左旋轉操作 把字串前面的若干個字元移動到字串的尾部。例如把字串 abcdef 左旋2位 得到字串 cdefab 請實現字串左旋轉的函式。要求時間對長度n的字串操作的複雜度位o n 輔助記憶體為o 1 分析 這題的難點是輔助記憶體只能只用o 1 相當於只能進行字串中字元的替換操作,如果...
GUID 字串,16位字串,19位數字
當我們想要獲得乙個唯一的key的時候,通常會想到guid。這個key非常的長,雖然我們在很多情況下這並不是個問題。但是當我們需要將這個36個字元的字串放在url中時,會使的url非常的醜陋。想要縮短guid的長度而不犧牲它的唯一性是不可能的,但是如果我們能夠接受乙個16位的字串的話是可以做出這個犧牲...