日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Python裝飾器演化過(guò)程

來(lái)源: 責(zé)編: 時(shí)間:2023-12-11 17:18:57 240觀看
導(dǎo)讀Python 的裝飾器可能是很多初學(xué)者難以搞懂的知識(shí)點(diǎn)之一,其實(shí)以前我也有講解這方面的知識(shí),不過(guò)那是在 pandas 專欄里面。今天以另一個(gè)角度再次講解裝飾器。場(chǎng)景先看看一開(kāi)始的代碼:行2:這是今天我們需要實(shí)現(xiàn)的裝飾器函數(shù)行

Python 的裝飾器可能是很多初學(xué)者難以搞懂的知識(shí)點(diǎn)之一,其實(shí)以前我也有講解這方面的知識(shí),不過(guò)那是在 pandas 專欄里面。2Yj28資訊網(wǎng)——每日最新資訊28at.com

今天以另一個(gè)角度再次講解裝飾器。2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

場(chǎng)景

先看看一開(kāi)始的代碼:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

  • 行2:這是今天我們需要實(shí)現(xiàn)的裝飾器函數(shù)
  • 行5:裝飾器函數(shù)可以作用到任意其他的函數(shù)上
  • 行10:每當(dāng)調(diào)用被裝飾的函數(shù),就會(huì)在執(zhí)行函數(shù)之前打印一句內(nèi)容,運(yùn)行結(jié)束后,打印結(jié)果內(nèi)容

比如 行10 執(zhí)行后,后臺(tái)會(huì)輸出。2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

接下來(lái),我們一步步實(shí)現(xiàn) faker 函數(shù)。2Yj28資訊網(wǎng)——每日最新資訊28at.com

函數(shù)名字是變量名而已

前面定義的函數(shù) mysum ,只不過(guò)是一個(gè)普通變量。就像你用一個(gè)變量保存了一個(gè)字符串一樣:2Yj28資訊網(wǎng)——每日最新資訊28at.com

mystr = 'xxxx'

只不過(guò)函數(shù)是表達(dá)一段代碼(邏輯)。怎么證明?2Yj28資訊網(wǎng)——每日最新資訊28at.com

python 中可以用 del 關(guān)鍵字刪除一個(gè)變量:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

行12 會(huì)報(bào)錯(cuò):2Yj28資訊網(wǎng)——每日最新資訊28at.com

NameError: name 'mysum' is not defined

不怕,可以先用另一個(gè)變量"接住"函數(shù)對(duì)象:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

行8:注意了,mysum 后面沒(méi)有帶括號(hào)。因?yàn)楹瘮?shù)名 + 括號(hào),才是執(zhí)行函數(shù)體內(nèi)的代碼。只是寫函數(shù)名字,實(shí)際上并沒(méi)有執(zhí)行函數(shù)。2Yj28資訊網(wǎng)——每日最新資訊28at.com

好了,到此為止,下面是初始版本的 faker:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

非常簡(jiǎn)單了,應(yīng)該大家都能理解。不過(guò)現(xiàn)在 faker 一點(diǎn)都不像 mysum 呀!調(diào)用是這樣子的:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

而且參數(shù) 1 和 2 還固定寫在了 faker 里面。2Yj28資訊網(wǎng)——每日最新資訊28at.com

那么,先解決參數(shù)的問(wèn)題吧,非常簡(jiǎn)單,設(shè)置兩個(gè)參數(shù)就可以:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

用上一開(kāi)始的"變量假冒法" :2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

但 faker 函數(shù)里面仍然有一個(gè)固定的東西(行8),那個(gè) other_func 變量永遠(yuǎn)指向 mysum 函數(shù)(行4)。我們希望 faker 函數(shù)可以假冒任意的函數(shù)。2Yj28資訊網(wǎng)——每日最新資訊28at.com

函數(shù)傳遞

我們既然學(xué)會(huì)了"變量假冒法",那么就能知道,函數(shù)對(duì)象其實(shí)與普通的數(shù)據(jù)差不多,是可以通過(guò)參數(shù)傳入另一個(gè)函數(shù)中。2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

  • 行6:新增一個(gè)參數(shù),讓外面把 mysum 傳進(jìn)來(lái)吧,這樣子就變動(dòng)態(tài)了
  • 行12:傳入 mysum 函數(shù)。注意,mysum 后面是沒(méi)有括號(hào),我們沒(méi)有執(zhí)行 mysum 函數(shù)本身

但是顯然,現(xiàn)在代碼報(bào)錯(cuò)了,因?yàn)?faker 函數(shù)原來(lái)的兩個(gè)變量 a 和 b 沒(méi)有了。就算把 a 和 b 加上,也不行:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

我們并不是要在行12那里執(zhí)行函數(shù)。怎么辦?2Yj28資訊網(wǎng)——每日最新資訊28at.com

other_func 參數(shù)肯定是需要的,只是直接放在 faker 不行而已。那么就多搞一個(gè)函數(shù)吧:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

勝利的曙光已經(jīng)出現(xiàn)了。2Yj28資訊網(wǎng)——每日最新資訊28at.com

上面 vs code 已經(jīng)提示出兩個(gè)錯(cuò)誤。一個(gè)個(gè)來(lái)。2Yj28資訊網(wǎng)——每日最新資訊28at.com

第一個(gè)問(wèn)題,行16,我們希望 real_faker 調(diào)用后,返回 faker 函數(shù)本身。2Yj28資訊網(wǎng)——每日最新資訊28at.com

簡(jiǎn)單:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

可以看到 行16 沒(méi)有提示錯(cuò)誤了。2Yj28資訊網(wǎng)——每日最新資訊28at.com

第二個(gè)問(wèn)題,行12,找不著變量 other_func 。2Yj28資訊網(wǎng)——每日最新資訊28at.com

簡(jiǎn)單,在函數(shù) real_faker 中,不就有一個(gè)大大的參數(shù) other_func 。把整個(gè) faker 函數(shù)移進(jìn)去就可以:2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在 real_faker 就是帶有裝飾器效果。不過(guò),可以看到,每次我們要裝飾一個(gè)函數(shù),都必須寫上 行17 的代碼。2Yj28資訊網(wǎng)——每日最新資訊28at.com

所以,python 提供了一個(gè)簡(jiǎn)化的語(yǔ)法。2Yj28資訊網(wǎng)——每日最新資訊28at.com

2Yj28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-42204-0.htmlPython裝飾器演化過(guò)程

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 京東員工內(nèi)網(wǎng)“諫言”劉強(qiáng)東原文部分內(nèi)容曝光:促銷簡(jiǎn)化推進(jìn)一半,為何沒(méi)聲了

下一篇: PyTorch 親自出手,少量代碼讓大模型推理提速10倍!

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 摸魚心法第一章——和配置文件說(shuō)拜拜

    為了能摸魚我們團(tuán)隊(duì)做了容器化,但是帶來(lái)的問(wèn)題是服務(wù)配置文件很麻煩,然后大家在群里進(jìn)行了“親切友好”的溝通圖片圖片圖片圖片對(duì)比就對(duì)比,簡(jiǎn)單對(duì)比下獨(dú)立配置中心和k8s作為配
  • 掘力計(jì)劃第 20 期:Flutter 混合開(kāi)發(fā)的混亂之治

    在掘力計(jì)劃系列活動(dòng)第20場(chǎng),《Flutter 開(kāi)發(fā)實(shí)戰(zhàn)詳解》作者,掘金優(yōu)秀作者,Github GSY 系列目負(fù)責(zé)人戀貓的小郭分享了Flutter 混合開(kāi)發(fā)的混亂之治。Flutter 基于自研的 Skia 引擎
  • 深度探索 Elasticsearch 8.X:function_score 參數(shù)解讀與實(shí)戰(zhàn)案例分析

    在 Elasticsearch 中,function_score 可以讓我們?cè)诓樵兊耐瑫r(shí)對(duì)搜索結(jié)果進(jìn)行自定義評(píng)分。function_score 提供了一系列的參數(shù)和函數(shù)讓我們可以根據(jù)需求靈活地進(jìn)行設(shè)置。近期
  • “又被陳思誠(chéng)騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國(guó)產(chǎn)懸疑電影,成了陳思誠(chéng)的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠(chéng)再度風(fēng)頭無(wú)兩。你可以說(shuō)陳思誠(chéng)的
  • 新電商三兄弟,“抖快紅”成團(tuán)!

    來(lái)源:價(jià)值研究所作 者:Hernanderz 隨著內(nèi)容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業(yè)內(nèi)一股不可忽視的勢(shì)力,給阿里、京東、拼多多帶去了巨大壓
  • 馮提莫簽約抖音公會(huì) 前“斗魚一姐”消失在直播間

    來(lái)源:直播觀察提起“馮提莫”這個(gè)名字,很多網(wǎng)友或許聽(tīng)過(guò),但應(yīng)該不記得她是哪位主播了。其實(shí),作為曾經(jīng)的“斗魚一姐”,馮提莫在游戲直播的年代影響力不輸于現(xiàn)
  • 2299元起!iQOO Pad開(kāi)啟預(yù)售:性能最強(qiáng)天璣平板

    5月23日,iQOO如期舉行了新品發(fā)布會(huì),除了首發(fā)安卓最強(qiáng)旗艦處理器的iQOO Neo8系列新機(jī)外,還在發(fā)布會(huì)上推出了旗下首款平板電腦——iQOO Pad,其搭載了天璣
  • iQOO Neo8系列今日官宣:首發(fā)天璣9200+ 全球安卓最強(qiáng)芯!

    在昨日舉行的的聯(lián)發(fā)科新一代旗艦芯片天璣9200+的發(fā)布會(huì)上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發(fā)搭載這款當(dāng)前性能最強(qiáng)大的移動(dòng)平臺(tái)
  • 利用職權(quán)私自解除被封帳號(hào) Meta開(kāi)除20多名員工

    11月18日消息,據(jù)外媒援引知情人士表示,過(guò)去一年時(shí)間內(nèi),F(xiàn)acebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過(guò)內(nèi)部系統(tǒng)以不當(dāng)方式重置用戶帳號(hào),其
Top 主站蜘蛛池模板: 榆林市| 钟祥市| 高阳县| 土默特左旗| 石楼县| 株洲市| 岑巩县| 方正县| 乐东| 沂源县| 拜泉县| 和田市| 靖州| 梧州市| 成安县| 绍兴市| 长武县| 西乡县| 礼泉县| 临沧市| 龙山县| 资阳市| 乌拉特后旗| 寿阳县| 桂东县| 西林县| 托克逊县| 远安县| 镇安县| 武定县| 垫江县| 安泽县| 九江县| 南漳县| 武平县| 大庆市| 台南市| 阳信县| 明光市| 鄂托克旗| 罗江县|