1. 程式人生 > >2018-11-28學習筆記

2018-11-28學習筆記

1. 多型別傳值和冗餘引數 

把元組作為引數傳給函式:

fun(*tuple)

注:命名引數後面跟元組,不能把元組放在命名引數前

fun(x=1, y=2)

注:x 和 y 不能改成其他字元,必須和函式定義的形式引數一致;

 

字典傳值:

fun(**dict)

字典的keys要和函式的行參一致

冗餘引數:

向函式傳元組和字典

處理多餘實參

def fun(x,y,*args,**kwargs)

  • x y表示普通命名引數;
  • 接收冗餘引數用*args 和 **kwargs表示;
  • *args 會把多餘的引數寫到元組裡;
  • **kwargs 冗餘引數是預設引數型別或字典時寫入Kwargs;

 

2. 函式的遞迴呼叫

遞迴是函式內部呼叫自己,通常用來計算階層

計算階層有迴圈和遞迴兩種方法;

 

普通方法:

    - 使用迴圈

1到n遞乘:

#! /usr/bin/python

def factorial(n):

sum = 1

for i in range(1, n+1):

sum *= i

return sum

print factorial(5)

1到n遞加:

#! /usr/bin/python

def factorial(n):

sum = 0

for i in range(1, n+1):

sum += i

return sum

print factorial(100)

遞迴呼叫:

n到1遞乘:

def factorial(n):

   if n == 0:

        return 1

   else:

        return n * factorial(n-1)

 

print factorial(5)

1到n遞加:

#! /usr/bin/python

def factorial(n):

if n == 0:

return 0

else:

return n + factorial(n-1)

print factorial(100)

遞迴的注意事項:

必須有最後的預設結果

        if n == 0

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

        factorial(n-1)

 

os模組的幾個方法:

os.listdir()

列出目錄下的檔案和目錄,以列表形式輸出

os.path.isdir()

判斷是不是目錄,返回bool值

os.path.isfile()

判斷是不是檔案,返回bool值

os.path.join()

連線路徑,不會判斷檔案存不存在

列印目錄下所有檔案:

#! /usr/bin/python

import os

import sys

 

def print_files(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 dirs:

for d in dirs:

print_files(os.path.join(path,d))

if files:

for f in files:

print os.path.join(path,f)

print_files(sys.argv[1])