1. 程式人生 > >python中的閉包練習

python中的閉包練習

這兩天在學習python相關的知識,發現裝飾器是一種使該程式語言更加pythonic的東西,接觸學習後又引出了閉包相關的知識,於是花時間看了看相關知識並自己敲了下往上給出的比較經典的閉包的相關練習來加深印象。下面是閉包中比較又代表性的兩個應用例項,代表了閉包的兩大功能:

#-*-coding:utf-8-*-

#閉包的功能1:儲存當前的環境(儲存當前執行後外層函式形參變數的狀態)
origin = [0, 0]
def move(pos = origin):
    def go(direction, step):
        pos[0] = pos[0] + direction[0] * step
        pos[1] = pos[1] + direction[1] * step
        return pos
    return go

player = move()
print(player([0, 1], 10))
print(player([1, 0], 20))

#閉包功能2:可以根據外層函式的區域性變數得到不同的結果

def find_str(keep):
    def find(file_name):
        with open (file_name, "r") as f:
            res = [i for i in f.readlines() if keep in i]
        return res
    return find

file_name = "1.txt"
keep = "23"
search_in = find_str(keep)
print search_in(file_name)