天天看點

遞歸列出目錄裡的檔案、匿名函數

遞歸列出目錄裡的檔案

#!/usr/bin/python

import os

import sys

def print_file(path):

    lidir=os.listdir(path)

    dirs=[i for i in lidir if os.path.isdir(os.path.join(path,i))]

    files=[i for i in lidir if os.path.isfile(os.path.join(path,i))]

    if files:

        for i in files:

            print os.path.join(path,i)

    if dirs:

        for j in dirs:

            print_file(os.path.join(path,j))

print_file(sys.argv[1])

匿名函數

匿名函數就是沒有函數名的函數,即 lambda 函數,lambda 函數是一種快速定義單行的最小函數,可以用在任何需要函數的地方,lambda 可以省去定義函數的過程,讓代碼更加精簡,而且使用 lambda 在某些時候讓代碼更容易了解,對于一些抽象的,不會被别的地方再重複使用的函數,有時候函數起個名字也是個難題,使用 lambda 不需要考慮命名的問題

傳統的函數:

In [66]: def add(x,y):

    ...:     return x + y

    ...: 

In [67]: add(3,4)

Out[67]: 7

匿名函數:

In [68]: r=lambda x,y:x+y # lambda 語句中,冒号前是參數,可以有多個,用逗号隔開,冒号右邊是傳回值,lambda 語句建構的其實是一個函數對象

In [69]: r(4,5)

Out[69]: 9

本文轉自 iekegz 51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/2057849,如需轉載請自行聯系原作者