天天看點

多類型傳值和備援參數 、函數的遞歸調用

函數的參數有形參和實參,我們可以傳遞多種類型的實參,稱為多類型傳值,如下:

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

...: return x+ y

...: 

In [14]: add(3,4)

Out[14]: 7

In [15]: t=(1, 2)

In [16]: add(*t) #可以傳遞一個元組

Out[16]: 3

In [17]: d={'x':10, 'y':20}

In [18]: add(**d) #可以傳遞一個字典,當函數定義的是x,y,字典的key必須是x,y

Out[18]: 30

In [21]: d={'x':'a', 'y':'b'}

In [22]: add(**d)

Out[22]: 'ab'

也可以這樣導入:

In [29]: def fun(a,b,*c):

...: print a

...: print b

...: print c

...:

備援參數:

在定義函數的時候,假設我們定義了三個形參,那麼我們就得傳遞三個實參,當我們定義一個沒有具體數量的形參時,我們可以采用 def fun(x, *args, **kwargs) 這種形式來定義,這樣我們在傳遞實參的時候就不會受限制了

In [30]: fun(1,2,3,4,5,6,7,8,9)

1

2

(3, 4, 5, 6, 7, 8, 9)

In [37]: fun(1, 2, 3, 4, y=5,z=6)

(2, 3, 4)

{'y': 5, 'z': 6}

多類型傳值和備援參數 、函數的遞歸調用

滿足條件

遞歸調用即在定義函數的時候,在函數内部再調用自己,也就是函數自己調用自己,通常用于計算階乘

注意一點的是,如果函數一直調用自己,那就成了死循環了,是以我們通常會設一個條件,當條件為假時函數就終止了

當n=0時,傳回為1,例如6=321

列印目錄下所有檔案:

方法:

判斷是否是目錄或者檔案

列出目錄下所有的檔案和目錄

多類型傳值和備援參數 、函數的遞歸調用

以下兩個一個意思,都是加到清單裡

list1=list()

for i in range(0,10):

if i !=5:

list1.append(i)

list2=[i for i in range(0,10) if i!=5]

import sys

def print_file(path):

lsdir=os.listdir(path) #将目錄下的檔案及檔案夾都列印出來

dirs=[i for i in lsdir if os.path.isdir(os.path.join(path,i))] #周遊若是目錄則列印出來,放在一個清單

files=[i for i in lsdir if os.path.isfile(os.path.join(path,i))]#周遊若是檔案則列印出來,放在一個清單

if files: #若是檔案存在

for f in files:

print os.path.join(path,f)

if dirs: #若是目錄存在

for d in dirs:

print_file(os.path.join(path,d)) #需要指定絕對路徑

print_file(sys.argv[1])#腳本後面需要跟一個參數,若是2,則需要2個

本文轉自 jiekegz  51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/2057449

繼續閱讀