python學習筆記之五 函式初體驗

2021-08-18 02:09:06 字數 2246 閱讀 8840

使用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,...