什麼是python的函數編程式?python的高階函數包括哪些,作用是什麼?

一:eval()和exec()函數

  1. eval() 函數:(表達式求值)

格式:

eval(source, global=None, locals=None)

作用:

把一個字符串當成一個表達式來執行,返回表達式執行後的結果。(通常用於網絡通信)

示例:

x = 100

y = 200

s =”print(‘python’,‘x=’, x,‘y=’ , y)”

v = evals(s)

說明:

s是一個字符串,用veals()函數調用字符串,並用一個變量接收s的返回值,此時就會執行print語句,並打印輸出s表達式的結果,代碼如下:

2. exec() 函數

作用:

把一個字符串當成程序來執行。(相當於可以把程序寫在字符串裏)

格式:

Exec(source, global=None, locals=None)

示例:

x = 100

y = 200

s = ’z = x + y; print(z); del z; print(‘刪除成功’)’

exec(s)

說明:

先執行exec(s)函數,計算字符串z的值,並打印輸出,然後刪除z,並打印刪除成功。

二:globals和locals參數

  1. 此兩個參數是用來設置’表達式’或’程序運行的全局變量和局部變量(此兩個參數必須爲字典)

示例:

x = 100

y= 200

s = ‘print(x , y , x+y)’

exec(s)

exec(s, {‘x’:10, ‘y’:20})

exec(s, {‘x’:10},{‘x’:1, ‘y’:2})

exec(s, {‘x’:10},{ ‘y’:2})

說明:

**如果s打印輸出執行,它有兩個作用域,分別是globals(全局變量)和locals(局部變量)。如果同一個字符串只有全局變量,那麼程序就在全局裏執行,如上面第二條exec語句,如果即有全局變量又有局部變量(如上例中第三條exec語句),那麼會忽略掉全局變量,打印輸出局部變量和程序s的最終結果。**代碼如下圖:

三:函數式編程

  1. 函數式編程是指用一系列函數決定問題。

  2. 函數是一等公民(我們程序的基本單位是用函數來組成的),函數本身可以賦值給變量,賦值後變量綁定函數,允許將函數本身作爲參數傳入另一個函數並返回一個函數。

  3. 函數式編程要求函數可重入性:即一個函數傳的參數一定,則結果必須一定;要求def定義的函數不要訪問除局部變量以外的變量。

示例:

def myadd(x, y)

return x + y

print(myadd(10, 20))

三:高階函數(High Order Function)

  1. 滿足下列任何一個條件的函數即爲高階函數:
  • 函數接受一個或多個函數作爲參數傳入。

  • 函數返回一個函數

2. python中內建(builtins)的高階函數主要有:

  • map , filter ,sorted

3. map函數:

  • map(func,*interables)用函數和可迭代對象中的每一個元素作爲參數計算出新的可迭代對象,當最短的一個可迭代對象不再提供數據時,此可迭代對象生成結束。

  • 示例:

def pow2(x):

return x ** 2

for x in map(pow2, range(1, 10)):

print(x)

  1. filter函數
  • 格式:

filter(func, iterable)

  • 作用:

篩選可迭代對象iterable中的數據,返回一個可迭代對象,此可迭代對象將iterable進行篩選。

  • 說明:

函數func將對每個元素進行求值,返回False則將此數據丟棄,返回True則保留此數據。

  • 示例:

判斷x是否爲奇數?

def isodd(x):

return x % 2 == 1

for x in filter(isodd, range(10)):

print(x)

even = [x for x in

filter(lambda x: x % 2 == 0, range(10))]

5. sorted函數:

  • 作用:

將原可迭代對象的數據進行排序,生成排序後的列表。

  • 格式:

sorted(iterable, key=None, reverse=False(默認升序))

  • 說明:
  1. Iterable可迭代對象。

  2. key函數是用來提供一個參考值,這個值將作爲排序的依據。

  3. reverse標誌用來設置是否降序排序。

  • 示例:

L = [5, -2, -4, 0, 3, 1]

L2 = sorted(L)默認是升序排列

L2 = sorted(L, reverse=True) reverse爲True的時候是升序排序

L3 = sorted(L, key=abs)依據列表數據裏面的絕對值來排序


推薦我們的Python學習扣qun:784758214 ,看看前輩們是如何學習的!從基礎的python腳本到web開發、爬蟲、django、數據挖掘等【PDF,實戰源碼】,零基礎到項目實戰的資料都有整理。送給每一位python的小夥伴!每天都有大牛定時講解Python技術,分享一些學習的方法和需要注意的小細節,點擊加入我們的 python學習者聚集地

總結:

函數式編程就是用可用的函數,疊加在一起,辦可能辦的事。大家在編程時要注意,函數在python是利用率最高的語言,幾個函數能完成的事,決不去編寫什麼循環、判斷等語句代碼,這樣做反而會增加我們的工作難度,不利於代碼運行。好了,有關高階函數和函數的編程式小編就給大家介紹到這裏,如喜歡小編的乾貨請關注、評論、分享!小編一定會給各位朋友們創作更多的優質內容與大家一起學習哦!​

發佈了54 篇原創文章 · 獲贊 68 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章