python小總結
1、獲取python IDLE當前工作目錄:
1 import os 2 os.getcwd()
2、更改當前工作目錄(目錄前面需要加“r”,不然會報語法錯誤):
os.chdir(r"工作目錄")
3、運行xxx.py內的某個函數:
1 from xxx import func_name #xxx不需要包含擴展名.py 2 func_name() #直接調用即可
4、空函數
def func_name(): pass #pass是占位符,便於處理未寫好的函數
5、數據類型檢查可以使用函數isinstance(),對參數類型做檢查,只允許整數和浮點數類型的參數
defmy_abs(x): if not isinstance(x, (int, float)): raise TypeError(‘bad operand type‘) if x >= 0: return x else: return -x
6、定義包含可變參數的函數:
1 def calc(*numbers): #在參數前加一個“*”,調用函數是可以直接輸入calc(3,4,1,2) 2 sum = 0 3 for n in numbers: 4 sum = sum + n * n5 return sum
7、關鍵字參數
可變參數允許傳入0個或者任意一個參數,這些可變參數在函數調用時自動組裝為一個tuple,而關鍵字參數允許傳入0個或者任意個含參數名的參數,這些參數在函數內部自動組織為一個dict。
def person(name, age, **kw): print(‘name:‘, name, ‘age:‘, age, ‘other:‘, kw)
>>> person(‘Bob‘, 35, city=‘Beijing‘) name: Bob age: 35 other: {‘city‘: ‘Beijing‘}
>>> extra = {‘city‘: ‘Beijing‘, ‘job‘: ‘Engineer‘} #還可以這樣調用
>>> person(‘Jack‘, 24, **extra)
name: Jack age: 24 other: {‘city‘: ‘Beijing‘, ‘job‘: ‘Engineer‘}
8、python定義函數時,可以將5中參數同時組合使用(參數組合),組合順序必須為:必選參數、默認參數、可變參數、命名關鍵字參數、關鍵字參數。
9、改動下面的product函數,使之變成可接收一個或多個數並計算乘積:
1 def product(x,y): 2 return x*y 3 4 5 #改為 6 def product(*kw): 7 pro = 1 8 for i in kw: 9 pro = pro * i 10 return pro
要註意定義可變參數和關鍵字參數的語法:
*args
是可變參數,args接收的是一個tuple;
**kw
是關鍵字參數,kw接收的是一個dict。
以及調用函數時如何傳入可變參數和關鍵字參數的語法:
可變參數既可以直接傳入:func(1, 2, 3)
,又可以先組裝list或tuple,再通過*args
傳入:func(*(1, 2, 3))
;
關鍵字參數既可以直接傳入:func(a=1, b=2)
,又可以先組裝dict,再通過**kw
傳入:func(**{‘a‘: 1, ‘b‘: 2})
。
10、遞歸函數
漢諾塔:
1 利用遞歸函數移動漢諾塔: 2 def move(n, a, b, c): 3 if n == 1: 4 print(‘move‘, a, ‘-->‘, c) 5 else: 6 move(n-1, a, c, b) 7 move(1, a, b, c) 8 move(n-1, b, a, c) 9 10 move(4, ‘A‘, ‘B‘, ‘C‘)
11、叠代dict:
1 d={"a":3,"b":2,"c":6} 2 for key in d: #叠代key值 3 print(key) 4 5 for value in d.values(): #叠代value值 6 print(value) 7 8 for k,d in d.items(): #同時叠代key、value值 9 print(k,d)
12、python內置函數enumerate可以將list、tuple變成索引-元素對,這樣可以在for循環中同時叠代索引和元素本身:
1 d=[(2,3),(4,5),(1,2)] 2 for i,value in enumerate(d): 3 print(i,value)
13、列表生成式語句非常簡潔,用一句話就可以生成一個list對象:
[x*x for x in range(1,11)]
14、楊輝三角生成器
1 def triangles(lines): 2 L=[] 3 if lines == 0: 4 yield L 5 else: 6 L=[1] 7 i=1 8 yield L 9 while i<lines: 10 L=[sum(i) for i in zip([0]+L,L+[0])] 11 i=i+1 12 yield L
參考了 https://blog.csdn.net/zmy_3/article/details/51173580 這篇用的zip函數,自己稍加修改了一下。
一開始不懂的地方是第10行代碼,兩個list相加,就是合並,理解了這一點,在參考鏈接的那段代碼,就很容易理解了。
15、利用map()
函數,把用戶輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。
1 def normalize(name): 2 return(name.capitalize()) 3 4 5 l1=["xiaoming","dagou","john"] 6 l2=list(map(normalize,l1))
[‘Xiaoming‘, ‘Dagou‘, ‘John‘]#輸出結果
python小總結