2018/11/9(python)
---恢復內容開始---
1.前項引用
在函式定義之前,函式無法呼叫。
2.遞迴
import time def T(x): if x==1: return x else: time.sleep(2) #暫停 print(x) return x*T(x-1) x=T(5) print(x)
3.函式呼叫
def T(): print(1) def Y(): return T #返回T函式地址 Y()()
**********************************************************************************************************************************************************************************************************************
4.匿名函式==》lambda定義
f=lambda x:x+1 #x表形參,x+1表函式操作,f作為匿名函式返回接收 print(f(10))
**********************************************************************************************************************************************************************************************************************
程式設計方法論:1.面向過程。
2.函式式。==>用程式語言去實現數學函式。
3.面向物件。
滿足以下條件之一就是高階函式:
1.把函式當作引數傳給另外一個函式。
2.返回值中包含函式。
#例1 def fo(n): print(n) def T(): print("來自T") fo(T()) #例2 def f(): print("來自f") def F(): print("來自F") return f() F()
尾呼叫:在函式的最後一步呼叫另一個函式(最後一行不一定是函式的最後一步)
map函式
map(處理方法,可迭代物件)
#功能函式 def add(x): return x+1 def sub (x): return x-1 def pf(x): return x**2 #資料及功能處理 def fun(op,num): new=[] for i in num: s=op(i) new.append(s) return new num1=[5,3,2,4,5,2,5] print(fun(add,num1)) print(fun(pf,num1)) #map寫法,實現簡單,可讀性差 print(list(map(add,num1))) #例2 x="djuwjdjfihwofgg" def daxie(x): return x.upper() print(list(map(daxie,x))) #需要用list轉變為列表,否則返回map首地址
filter函式
people=["李四","張三","王二","李二"] def start(x): return x.startswith("李") def end(x): return x.endswith("二") #法一 def F(x,y): s=[] for i in y: if x(i): s.append(i) return s s=F(start,people) print(s) end_1=F(end,people) print(end_1) #法二 result=filter(start,people) print(list(result)) result_2=filter(end,people) print(list(result_2))
reduce函式
reduce(函式,序列,初始值)
reduce()函式接收的引數和 map()類似,一個函式 f,一個list,但行為和 map()不同,reduce()傳入的函式 f 必須接收兩個引數,reduce()對list的每個元素反覆呼叫函式f,並返回最終結果值。
from functools import reduce num=[4,3,7,1,6,5,10] def A(x,y): return x+y result=reduce(A,num,0) print(result)
**************************************************************************************************************************************************************************
內建函式
abs() <==取正
all(序列) 《==判斷是否所有元素為True
any() <==有一個為真就返回真
bin() <十進位制轉二進位制
bool() 判斷布林值
bytes() <==二進位制編碼,解碼
name='你好' print(bytes(name,encoding='utf-8'))
chr() <==轉換為對應ASCII
dir() <==檢視物件方法
print(dir(all))
divmod() <==求商和餘數
print(divmod(10,3))
eval() <==提取字串中的資料
eval("3*2")
可hash的資料型別即不可變資料型別
hash() 《==將字串進行hash運算
hex() <==十進位制轉十六進位制
oct() <==十進位制轉八進位制
isinstance() <==判斷資料型別
print(isinstance(10,int)) print(isinstance("10",int))