您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“python函數(shù)及閉包是什么及怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“python函數(shù)及閉包是什么及怎么用”吧!
函數(shù)對(duì)象指的是函數(shù)可以被當(dāng)做’數(shù)據(jù)’來處理
def my_b(a,b): print("maib") ff = my_b ff(1,1)
dic = {'my_b':my_b, 'max':max} print(dic) dic['my_b'](1,2)
def my_b(a,b): print("maib") def bb(): return my_b func=bb() func(1,2)
def my_b(a,b): print("maib" def foo(x,y,func): return func(x,y) foo(1,2, my_b)
定義在函數(shù)體內(nèi)部的函數(shù) 并且使用到了外部函數(shù)名稱空間中的名字
def func1(): name = 'le' def func2(): print(name) ================================================= def outer(username, password): # username = 'jason' # password = '123' def auth_user(): # 閉包函數(shù) if username == 'lele' and password == '123': print('登錄成功') else: print('登錄失敗') auth_user() outer('lele', '123')
可以通過函數(shù)的closure屬性,查看到閉包函數(shù)所包裹的外部變量
func1.__closure__
“閉”代表函數(shù)是內(nèi)部的,“包”代表函數(shù)外’包裹’著對(duì)外層作用域的引用。因而無論在何處調(diào)用閉包函數(shù),使用的仍然是包裹在其外層的變量。
目前為止,我們得到了兩種為函數(shù)體傳值的方式,一種是直接將值以參數(shù)的形式傳入,另外一種就是將值包給函數(shù)
import requests #方式一: def get(url): return requests.get(url).text #方式二: def page(url): def get(): return requests.get(url).text return get
提示:requests模塊是用來模擬瀏覽器向網(wǎng)站發(fā)送請(qǐng)求并將頁面內(nèi)容下載到本地,需要事先安裝:pip3 install requests
對(duì)比兩種方式,方式一在下載同一頁面時(shí)需要重復(fù)傳入url,而方式二只需要傳一次值,就會(huì)得到一個(gè)包含指定url的閉包函數(shù),以后調(diào)用該閉包函數(shù)無需再傳url
# 方式一下載同一頁面 get('https://www.python.org') get('https://www.python.org') get('https://www.python.org') …… # 方式二下載同一頁面 python=page('https://www.python.org') python() python() python() ……
閉包函數(shù)的這種特性有時(shí)又稱為惰性計(jì)算。使用將值包給函數(shù)的方式,在裝飾器中也將大有用處
到此,相信大家對(duì)“python函數(shù)及閉包是什么及怎么用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。