成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python裝飾器演化過程

開發 前端
Python 的裝飾器可能是很多初學者難以搞懂的知識點之一,今天以另一個角度再次講解裝飾器。

Python 的裝飾器可能是很多初學者難以搞懂的知識點之一,其實以前我也有講解這方面的知識,不過那是在 pandas 專欄里面。

今天以另一個角度再次講解裝飾器。

場景

先看看一開始的代碼:

  • 行2:這是今天我們需要實現的裝飾器函數
  • 行5:裝飾器函數可以作用到任意其他的函數上
  • 行10:每當調用被裝飾的函數,就會在執行函數之前打印一句內容,運行結束后,打印結果內容

比如 行10 執行后,后臺會輸出。

接下來,我們一步步實現 faker 函數。

函數名字是變量名而已

前面定義的函數 mysum ,只不過是一個普通變量。就像你用一個變量保存了一個字符串一樣:

mystr = 'xxxx'

只不過函數是表達一段代碼(邏輯)。怎么證明?

python 中可以用 del 關鍵字刪除一個變量:

行12 會報錯:

NameError: name 'mysum' is not defined

不怕,可以先用另一個變量"接住"函數對象:

行8:注意了,mysum 后面沒有帶括號。因為函數名 + 括號,才是執行函數體內的代碼。只是寫函數名字,實際上并沒有執行函數。

好了,到此為止,下面是初始版本的 faker:

非常簡單了,應該大家都能理解。不過現在 faker 一點都不像 mysum 呀!調用是這樣子的:

而且參數 1 和 2 還固定寫在了 faker 里面。

那么,先解決參數的問題吧,非常簡單,設置兩個參數就可以:

用上一開始的"變量假冒法" :

但 faker 函數里面仍然有一個固定的東西(行8),那個 other_func 變量永遠指向 mysum 函數(行4)。我們希望 faker 函數可以假冒任意的函數。

函數傳遞

我們既然學會了"變量假冒法",那么就能知道,函數對象其實與普通的數據差不多,是可以通過參數傳入另一個函數中。

  • 行6:新增一個參數,讓外面把 mysum 傳進來吧,這樣子就變動態了
  • 行12:傳入 mysum 函數。注意,mysum 后面是沒有括號,我們沒有執行 mysum 函數本身

但是顯然,現在代碼報錯了,因為 faker 函數原來的兩個變量 a 和 b 沒有了。就算把 a 和 b 加上,也不行:

我們并不是要在行12那里執行函數。怎么辦?

other_func 參數肯定是需要的,只是直接放在 faker 不行而已。那么就多搞一個函數吧:

勝利的曙光已經出現了。

上面 vs code 已經提示出兩個錯誤。一個個來。

第一個問題,行16,我們希望 real_faker 調用后,返回 faker 函數本身。

簡單:

可以看到 行16 沒有提示錯誤了。

第二個問題,行12,找不著變量 other_func 。

簡單,在函數 real_faker 中,不就有一個大大的參數 other_func 。把整個 faker 函數移進去就可以:

現在 real_faker 就是帶有裝飾器效果。不過,可以看到,每次我們要裝飾一個函數,都必須寫上 行17 的代碼。

所以,python 提供了一個簡化的語法。

責任編輯:趙寧寧 來源: 數據大宇宙
相關推薦

2012-03-07 11:25:58

編程語言

2010-02-01 17:50:32

Python裝飾器

2023-02-07 07:47:52

Python裝飾器函數

2016-11-01 09:24:38

Python裝飾器

2022-09-19 23:04:08

Python裝飾器語言

2024-10-15 17:12:38

代碼父子線程開源

2021-06-01 07:19:58

Python函數裝飾器

2024-05-24 11:36:28

Python裝飾器

2025-01-22 15:58:46

2023-12-13 13:28:16

裝飾器模式Python設計模式

2021-04-11 08:21:20

Python@property裝飾器

2022-09-21 09:04:07

Python裝飾器

2024-09-12 15:32:35

裝飾器Python

2024-02-26 00:00:00

TypeScript裝飾器decorators

2021-07-27 15:58:12

Python日志代碼

2022-09-27 11:01:08

Python裝飾器

2013-05-03 14:44:12

Windows SerHyper-VVMware

2023-08-07 16:07:42

2025-01-06 15:00:00

Python裝飾器代碼

2025-07-01 09:46:30

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成年视频在线观看福利资源 | 国产亚洲一区二区三区在线观看 | 午夜精品久久久久久久99黑人 | 91麻豆精品国产91久久久资源速度 | 天天综合国产 | 国产精品久久国产精品 | 免费观看av| 欧美日高清视频 | 国产日韩欧美中文 | 在线观看国产视频 | 中文字幕久久久 | 久久爆操 | 成人福利网站 | 欧美日韩国产一区二区三区 | 美女操网站 | 成人福利片 | 欧洲精品久久久久毛片完整版 | 一区二区三区四区在线 | 国产日韩欧美中文 | 国产日韩精品在线 | 久久精品电影 | 日韩精品一区二 | av一级一片 | 日韩一区二区三区视频在线播放 | 免费看大片bbbb欧美 | 免费观看一级毛片 | 精品欧美一区二区三区久久久小说 | www.狠狠干| 久久69精品久久久久久国产越南 | 欧美一区二区三区视频 | 成人午夜精品 | 欧美日韩久久久久 | 国产欧美在线 | 一区视频在线 | 天堂影院av | 91高清视频在线观看 | 亚洲一区免费 | 久久艹免费视频 | 日韩中文av在线 | 狠狠插天天干 | 国产色婷婷精品综合在线手机播放 |