多型別傳值和冗餘引數 函式的遞迴呼叫

2021-09-20 16:03:15 字數 2578 閱讀 2826

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

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=

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

out[18]: 30

in [21]: d=

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) 這種形式來定義,這樣我們在傳遞實參的時候就不會受限制了

滿足條件

必須有最後的預設結果

if n == 0

遞迴引數必須向預設結果收斂的:

factorial(n-1)

遞迴呼叫即在定義函式的時候,在函式內部再呼叫自己,也就是函式自己呼叫自己,通常用於計算階乘

注意一點的是,如果函式一直呼叫自己,那就成了死迴圈了,因此我們通常會設乙個條件,當條件為假時函式就終止了

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

in [45]: def

fun(n):

...: if n==0:

...: return

1 ...: else:

...: return n*fun(n-1)

in [46]: fun(3)

out[46]: 6

相加時,當n=0時,返回為0,6 = 6+5+4+3+2+1+0

in [48]: def

fun(n):

...: if n==0:

...: return

0 ...: else:

...: return n + fun(n-1)

in [49]: fun(100)

out[49]: 5050

列印目錄下所有檔案:

方法:判斷是否是目錄或者檔案

in [54]: os.path.isdir('/proc/')

out[54]: true

in [55]: os.path.isdir('/a')

out[55]: false

in [56]: os.path.isfile('/etc/passwd')

out[56]: true

in [57]: os.path.join('/etc','aaa','bbb') #不管這個路徑存不存在,都連線在一起

out[57]: '/etc/aaa/bbb'

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

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.ar**[1])#指令碼後面需要跟乙個引數,若是2,則需要2個

多型別傳值和冗餘引數 函式的遞迴呼叫

函式的引數有形參和實參,我們可以傳遞多種型別的實參,稱為多型別傳值,如下 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 in 18 add d...

多型別傳值和冗餘引數 函式的遞迴呼叫

函式的引數有形參和實參,我們可以傳遞多種型別的實參,稱為多型別傳值,如下 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 in 18 add d...

Python基本語法 函式 引數的多型別傳值

軟體 一般而言,形參和實參的數量要一致。但是當實參為序列資料型別時,我們可以將多個實參傳遞到形參中。我們可以在實參列表中以 或者 識別符號來限制傳入的實參必須為 tuple list 或 dict 的型別物件。其實不定長引數本質是將冗餘的實參轉換為tuple資料型別後再傳遞給函式。下面的例子傳遞了乙...