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

Python編程:裝飾器之有關函數的再認知

開發 前端
裝飾器(Decorators)是Python中非常有用的工具。裝飾器是以另一個函數為參數并擴展其功能而不顯式修改它的函數。它允許我們修改函數或類的行為而不涉及其源代碼。

?裝飾器(Decorators)是Python中非常有用的工具。裝飾器是以另一個函數為參數并擴展其功能而不顯式修改它的函數。它允許我們修改函數或類的行為而不涉及其源代碼。

換句話說,裝飾器包裝一個函數是為了擴展它的行為,而不是永久地修改它。

從這篇開始,就來研究下裝飾器是啥以及是如何在Python中工作的。

1.1關于函數

為了理解裝飾器是如何工作的,我們需要重新回顧Python中關于函數的一些重要概念。時刻意識到,在Python中,函數(function)的地位是一等公民,所以下面幾個觀念要牢記:

  • ü 函數可以賦值為常規變量;
  • ü 函數可以作為參數傳遞給其他函數;
  • ü 函數可以返回函數;
  • ü 函數體中可以有其他函數(內部函數)。

下面來看看關于這些要點的函數示例。

1.1.1 示例-1:賦值給常規變量

# 把函數賦值給常規變量:

# 定義簡單函數
def sayHi(name:str):
return "Hi " + name + "."

#應用:函數賦值給變量
hi = sayHi
print(hi("Solo Cui"))
#輸出結果
Hi Solo Cui.

在代碼中,我們將函數定義為sayHi。然后將這個函數賦值給一個名為hi的局部變量。這個變量hi也是一個函數——這種情況下,可把被賦值的變量看作是函數的別名。接著就是把變量hi當做函數調用:hi("Solo Cui")。

1.1.2 示例-2:函數作為參數傳遞

代碼清單如下:

# 函數作為參數傳遞
def printHello(name):
print("Hello,", name)

# 把函數作為參數的函數
def hiWithFunction(func, xname):
func(xname)

#調用以函數為參數的函數
hiWithFunction(printHello,'上官婉兒')

代碼很好理解:定義了兩個函數,一個函數可以接收函數型參數,另一個函數作為參數傳遞給可接收函數型參數的函數

1.1.3 示例-3:返回函數的函數

代碼清單如下:

#示例3:返回函數的函數
def returnXFunction():
return sayHi #示例1中定義的函數,可自行定義其它函數

# 調用函數
xHi = returnXFunction()
print(xHi("BirdMan"))

這里定義了一個簡單的返回另一函數的函數,即returnXFunction(),調用該函數,把其返回的值賦給一個變量xHi,然后就可以基于變量名xHi來執行返回函數的功能了。

1.1.4 示例-4:函數體內置函數

也就是在一個函數體內部定義函數。請看代碼:

# 示例4:函數體內不含稅
def outerXFunction(msg):
'''外部函數'''
#代碼...
#定義內嵌函數
def innerXFunc():
'''內部函數'''
print(msg,'來自內嵌函數.')

#函數體內調用內嵌函數
innerXFunc()

#調用外部函數
outerXFunction("火麒麟")

我在函數outerXFunction的內部定義了一個innerXFunc函數,并在外部的函數體內部調用內嵌的函數,以便在調用外部函數時,使得內嵌函數獲得執行。

如代碼所示,調用外部函數時,把字符串“火麒麟”傳給參數msg。輸出“火麒麟 來自內嵌函數.”是由自內嵌函數完成。這里需要注意的是innerXFunc使用的msg變量在其自身函數體內并沒有定義,換句話說,它是使用的變量來自其父級范圍——這就是Python中閉包的理念。

簡單說一句,關于Python閉包:閉包是一個函數對象,它記住父級對象作用域中的值,可用來在一個函數與一組“私有”變量之間創建關聯關系。在給定函數被多次調用的過程中,這些私有變量能夠保持其持久性。?

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2013-05-06 10:22:07

結對編程敏捷開發敏捷管理

2010-02-01 17:50:32

Python裝飾器

2023-02-07 07:47:52

Python裝飾器函數

2021-06-01 07:19:58

Python函數裝飾器

2016-11-01 09:24:38

Python裝飾器

2024-05-24 11:36:28

Python裝飾器

2023-11-21 07:17:36

Reac函數組件

2010-03-01 09:43:09

Python編程語言

2024-09-23 09:00:00

裝飾器函數代碼

2024-11-04 15:30:43

Python裝飾器函數

2021-07-12 10:24:36

Go裝飾器代碼

2010-07-23 16:10:34

Perl用戶函數

2025-01-22 15:58:46

2021-04-11 08:21:20

Python@property裝飾器

2022-09-19 23:04:08

Python裝飾器語言

2021-05-27 07:12:19

Python函數裝飾器

2022-10-24 07:31:53

Python編程裝飾器

2024-09-12 15:32:35

裝飾器Python

2022-11-09 07:42:51

Python編程函數

2022-09-27 11:01:08

Python裝飾器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产欧美一区二区三区成人 | 日本在线黄色 | 久久极品 | 日韩国产在线 | 欧美国产日本一区 | 国产精品国产三级国产aⅴ无密码 | 亚洲成人www| 国产精品美女一区二区 | 男女视频在线免费观看 | 五月激情婷婷在线 | 羞羞免费网站 | 一级黄色片日本 | 亚洲精品美女在线观看 | 久久机热 | h视频在线观看免费 | 国产福利视频导航 | 欧美精品一区二区三区在线播放 | 欧美日韩国产一区二区三区 | 美美女高清毛片视频免费观看 | 国产亚洲精品久久久优势 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 精品欧美一区二区精品久久 | 97avcc| 亚洲成人一区二区 | 在线观看中文字幕视频 | 一本久久a久久精品亚洲 | 免费观看一级特黄欧美大片 | 欧美国产视频 | 91欧美精品成人综合在线观看 | 国产区在线观看 | 国产精品日日做人人爱 | 伊人网一区 | 亚洲精品成人av | 日韩靠逼| 午夜日韩精品 | 青青草精品 | 精品国产一区二区三区久久久蜜月 | 91久久北条麻妃一区二区三区 | 成人在线观看黄 | 一级黄色片网站 | 欧美狠狠操 |