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])