流程的Python 第五章 一等函式

2021-08-03 12:01:06 字數 3180 閱讀 6252

前言:

python函式的一等本性,這意味著,我們可以把函式賦值給變數、傳給其他函式、儲存在資料結構中,以及訪問函式的屬性,供框架和一些工具使用。

目錄:

內容回顧

相關資料

閱讀後感

正文:

一. 內容回顧

1.1 把函式視作物件

通過別的名稱使用函式,再把函式作為引數傳遞,典型的函式式程式設計。如下:

# -*- coding:utf-8 -*-

deffactorial

(n):

return n

fact = factorial

print fact(2)

1.2 高階函式

接受函式為引數,或者把函式作為結果返回的函式是高階函式。如下:

# -*- coding:utf-8 -*-

defcall_function

(func):

print ("callfunc.")

func()

deffunction

():print ("call function")

call_function(function)

1.3 匿名函式

lambda關鍵字在python表示式內建立匿名函式

1.4 可呼叫物件

python中有各式各樣可呼叫的型別,因此判斷物件能否呼叫,最安全的方法是使用內建的callable()函式

1.5 使用者定義的可呼叫型別

不僅python函式是真正的物件,任何python物件都可以表現得像函式,為此,只需實現例項方法_ call _。

# -*- coding:utf-8 -*-

import random

class

bingocage:

def__init__

(self, items):

self._items = list(items)

random.shuffle(self._items)

defpick

(self):

try:

return self._items.pop()

except indexerror:

raise lookuperror("pick from empty bingocage")

def__call__

(self, *args, **kwargs):

return self.pick()

bingo = bingocage(range(3))

print callable(bingo)

1.6 函式內省

除了doc,函式物件還有很多屬性。使用dir函式可以探知

1.7 從定位引數到僅限關鍵字引數

1.8 獲取關於引數的資訊

1.9 函式註解

1.10 支援函式式程式設計的包

python的目標不是變成函式式程式語言,但是有益於operator和functools等包的支援,函式式程式設計風格也可以信手拈來。

二. 相關資料

2.1 高階函式

要理解「函式本身也可以作為引數傳入」,可以從python內建的map/reduce函式入手。

2.2 可呼叫函式

class

route(object):

def__init__(self, res)

self.resource = res

@classmethod

deffactory(cls):

print 'factory'

return cls()

@webob.dec.wsgify

def__call__(self,req):

print 'route __call__'

return

self.resource()

class

resource(object):

@webob.dec.wsgify

def__call__(self,req):

print 'resource __call__'

class

api(route):

def__init__(self):

res = resource()

super(api, self).__init__(res)

wsgi.server(eventlet.listen(('', 80)), api.factory())

2.3 函式註解

python 3.x 引入了函式注釋,以增強函式的注釋功能,下面是乙個普通的自定義函式:

def

dog(name, age, species):

return (name, age, species)

新增了注釋的自定義函式:

def

dog(name:str, age:(1, 99), species:'狗狗的品種') -> tuple:

return (name, age, species)

如上,可以使用:對引數逐個進行注釋,注釋內容可以是任何形式,比如引數的型別、作用、取值範圍等等,返回值使用->標註,所有的注釋都會儲存至函式的屬性。

2.4 operator模組

operator模組是python中內建的操作符函式介面,它定義了一些算術和比較內建操作的函式。operator模組是用c實現的,所以執行速度比python**快。

相關運算子:

三. 閱讀後感

閱讀本章節對函式有了更深的理解,函式不僅僅是平時寫的一些靜態函式,類成員函式,還可以把函式當作物件,正如python提倡的一切皆物件。

參考:

1. python operator 模組簡單介紹

2. python 的函式注釋

3. python可呼叫物件call方法的用法分析

4. python的functools模組

5. python 高階函式

流暢的python第五章一等函式學習記錄

在python中,函式是一等物件,一等物件是滿足以下條件的程式實體 1在執行時建立 2能複製給變數或資料結構的元素 3能作為引數傳給函式 4能作為函式的返回結果 高階函式 接受函式作為引數或者把函式作為結果返回的函式 如map和sorted函式 map,filter和reduce的替代品 map和f...

python第五章 Python學習(第五章)

記錄所有的名片字典 card list defshow menu 顯示資訊 print 50 print 歡迎使用 名片管理系統 v1.0 print print 1.新增名片 print 2.顯示全部 print 3.搜尋名片 print print 0.退出系統 print 50 defnew ...

python學習第五章

1.把某件事作為另一件事匯入 import somemodule或from somemodule import somefunction或者from somemodule import somefunction,anotherfunction,yetanotherfunction或者from som...