本篇內(nèi)容主要講解“python函數(shù)及閉包是什么及怎么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“python函數(shù)及閉包是什么及怎么用”吧!
目前創(chuàng)新互聯(lián)公司已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、下花園網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
函數(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í)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!