使用python程式設計不可能只停留在一行一行輸入的感覺。python感覺使用c/c++的思路是很好理解的。函式就是面向過程的主要部分,而python的函式怎麼使用呢?
函式
def add(x,y):
return x+y
a = add(1,2)
b = add("1","2")
print(a,b)
結果是3,"12"。這就是普通的python函式,由於其變數的靈活性,c++的過載直接就簡簡單單了。格式需要特別注意4個空格或者是tab鍵,很容易報錯,畢竟沒有大括號{},想要簡單就得付出代價。
高階函式
什麼是高階函式?統統搞不清,但感覺就是函式指標啊!可以使用乙個變數直接賦值函式名,呼叫函式的方法,而且定義時的函式名竟然可以再被賦值,不再指向原來的函式,感覺好**,這樣會不會容易出錯啊。
def add(x,y):
return x+y
f = add #這個感覺就是函式指標,將f指向函式的開頭
print(f(1,3)) #可以
add = 1
print(add) #python可以進行將函式名重新賦值的**操作!一切皆物件?!
print(f(1,3)) #當然還是可以使用的
上面只是函式指標的初級呼叫,函式指標也可以當引數是肯定的。
def add(x,y):
return x+y
def dec(x,y):
return x-y
def show(x,y,fuc):
return fuc(x,y)
print(show(1,2,add))
print(show(1,2,dec))
結果是3 -1.是正常操作,使用起來確實方便。本來應該就這些的,但是看廖雪峰的python教程還有一些有趣的高階函式的使用方法,感覺是很有用,你直接去看他的吧。我只是學習寫寫自己的感悟。
下面介紹幾個使用高階函式這乙個特性的方法:
map(對乙個引數直接作用),reduce(對兩個引數直接作用),filter(過濾),sorted(排序)。
num = [1,2,3,4,5,6,7,8,9,10]
def mapfunc(x):
return x *2
r = map(mapfunc,num)
print(r) #直接列印會給位址。
print(list(r)) #這樣可以列印出來。是將每個值進行了乘以2的結果
def reducefunc(x,y):
return x+y
from functools import reduce
r = reduce(reducefunc,num) #相當於reducefunc(((1,2),3),4...)
print(r)
def filterfunc(x):
if x%2 == 0:
return true
r = filter(filterfunc,num) #將返回是true的留下來!過濾作用。
print(list(r))
num1 = [4,5,-63,2,1,-7,8,-9,0]
print(sorted(num1)) #正常排序,預設key
print(sorted(num1,key=abs)) #傳入key引數abs取絕對值後排序
def keyfunc(x):
if x >0:
return -x
else:
return x
print(sorted(num1,key=keyfunc)) #傳入自定義key引數取返回值排序
結果:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
55[2, 4, 6, 8, 10]
[-63, -9, -7, 0, 1, 2, 4, 5, 8]
[0, 1, 2, 4, 5, -7, 8, -9, -63]
[-63, -9, 8, -7, 5, 4, 2, 1, 0]
總結:
整體體驗下來感覺的到,python的高階函式使用特別的靈活,好像是把十分厲害的大炮,零件都有了,會玩的能玩的很好,不會玩的就很醜了,我確信高階函式一定有很多妙用!
python學習筆記(五)函式
python學習筆記 五 函式 1.函式是什麼?定義 函式是指一組語句的集合通過乙個名字 函式名 封裝起來,只需呼叫函式名即可。2.函式的好處 簡化 提高 的復用性 可擴充套件 3.python中函式的定義 定義函式使用def關鍵字,後面是函式名,函式名不能重複 1 def fun 定義乙個函式,後...
python學習筆記五(函式)
實現某個功能的 整合乙個隨時可呼叫的函式,即完成某項工作的 塊 def fuctioname parameterlist fuctioname 函式名稱 parameterlist 可選引數,形參 comments 可選引數,注釋,表明函式的功能 functionbody 函式需要執行的功能 例 s...
python學習筆記之(五)
高階函式 高階函式 higher order function 可接受函式作為引數,也可以把函式作為返回值。map reduce map 接受兩個引數,乙個是函式,乙個是數列。map將傳入的函式一次作用在數列的每個元素上,將結果作為新的list返回。def f x return x x map f,...