摘要:python中有好多可用性特別強的內置函數,熟練掌握對於以後的編程過程中有很大的幫助~~~~ callable函數、chr函數與ord函數、random函數、compile函數、evec與eval函數、dir函數,divmod函數、isinstance函數、filter與map函數 ...
摘要:python中有好多可用性特別強的內置函數,熟練掌握對於以後的編程過程中有很大的幫助~~~~
callable函數、chr函數與ord函數、random函數、compile函數、evec與eval函數、dir函數,divmod函數、isinstance函數、filter與map函數
1 #上節課回顧 2 li = [11, 22, 33, 44] 3 def f1(arg): 4 arg.append(55) 5 li=f1(li) 6 print(li) 7 >>>None 註意:因為函數無return所以返回值為None,li=f1(li)是把None值賦給li 8 9 li = [11, 22, 33, 44] 10 def f1(arg): 11 arg.append(55) 12 f1(li) 13 print(li) 14 >>>[11, 22, 33, 44, 55]
1 #callable函數,判斷是否可調用 2 def f1(): 3 pass 4 f1() 5 f2=123 6 print(callable(f1)) 7 #>>>True 8 print(callable(f2)) 9 #>>>False
1 #chr函數與ord函數 2 r=chr(65) 3 print(r) 4 >>>A #將65轉化為對應的ASCII碼 5 n=ord('a') 6 print(n) 7 >>>97 #將字幕a轉化為對應的ASCII碼數字
#隨機驗證碼,純6位字母 import random li=[] for i in range(6): temp=random.randrange(65,91)#隨機獲取65 到 91之間的數 c=chr(temp)#將隨機數轉化為字母 li.append(c)#追加放入列表中 result="".join(li) print(result) #隨機驗證碼,字母與數字結合 import random li=[] for i in range(6): if random.randrange(0,5) % 2: num = random.randrange(0,10) li.append(str(num)) else: temp=random.randrange(65,91)#隨機獲取65 到 91之間的數 c=chr(temp)#將隨機數轉化為字母 li.append(c)#追加放入列表中 result="".join(li) print(result)
#compile函數,將字元串編譯為python代碼 exec接受:代碼或者字元串 exec("print('abc')") >>>abc #執行表達式,並且獲取結果 ret=eval("7+9+8") print(ret) >>>24
1 #快速查看,對象提供了那些功能 2 print(dir(list)) 3 >>>['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', 4 '__dir__', '__doc__', '__eq__', '__format__', '__ge__', 5 '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', 6 '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', 7 '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 8 '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', 9 '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 10 'pop', 'remove', 'reverse', 'sort']
#divmod函數,共97條數據,每頁顯示10條,需要多少頁 r=divmod(97,10) print(r) >>>(9, 7) #9頁餘7條數據,可加判斷r[1]>0 則共需要r[0]+1頁
1 #isinstance函數,判斷是否為類的對象 2 s=[11,22,33] 3 r=isinstance(s,list) 4 print(r) 5 >>>True#列表s為列表的對象,字元串類型的值為str類的對象,字典類型的值為dict的對象
1 #filter函數 迴圈第二個參數,讓每個元素執行函數,如果函數返回True,表示元素合法,用於篩選 2 由下麵程式引出 3 def f1(args): 4 result=[] 5 for item in args: 6 if item>22:#判斷列表中大與22的值 7 result.append(item)#追加到result列表中 8 return result 9 li=[11,22,33,44,55] 10 ret=f1(li)#ret接收result的值 11 print(ret) 12 >>>[33, 44, 55] 13 #filter函數只返回True或False需要藉助lambda自動return接收返回值 14 f1=lambda a:a+30 15 ret=f1(30) 16 print(ret) 17 >>>60 18 19 #等同於 20 li=[11,22,33,44,55] 21 #迴圈第二個可迭代元素,判斷是否大於30返回True,lambda自動接收返回值並放入result中用於篩選 22 result= filter(lambda a:a > 30,li) 23 # 小於返回Flaselambda不接收返回值 24 print(list(result)) 25 26 #map函數,迴圈第二個可迭代元素,並返回值 27 li=[11,22,33,44,55] 28 result=map(lambda a:a+200,li) 29 print(list(result)) 30 >>>[211, 222, 233, 244, 255] 31 32 #兩函數比較 33 li = [11, 22, 33, 44] 34 r = map(lambda a: a+100, list(map(lambda a: a>30,li))) 35 print(list(r)) 36 # >>>[100, 100, 101, 101] #第二個元素結果返回0或1 37 38 li = [11, 22, 33, 44] 39 r = filter(lambda a: a+100, list(filter(lambda a: a>30,li))) 40 print(list(r)) 41 #>>>[33, 44] #filter無法進行表達式運算,只能將True結果通過lambda返回 42 43 li = [11, 22, 33, 44] 44 r = map(lambda a: a+100, list(filter(lambda a: a>30,li))) 45 print(list(r)) 46 #[133, 144] 結合運用,判斷大於30的則進行表達式運算
1 #len函數,註2.0版本中len字元自動轉為utf-8的位元組長度,3.0版本則不轉換,一個字元為一個長度 2 s='李光旭' 3 print(len(s)) 4 #>>>3 5 b=bytes(s,encoding='utf-8') 6 print(len(b)) 7 #>>>9