python被修飾的函數(shù)消失問題解決(基于wraps函數(shù))
這篇文章主要介紹了python被修飾的函數(shù)消失問題解決(基于wraps函數(shù)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
當使用@修飾符修飾函數(shù)時,會存在這樣一個問題:被修飾的函數(shù)會消失(這是因為修飾函數(shù)沒有設(shè)置返回值,如果設(shè)置了返回值,則就把返回值賦給被修飾函數(shù),比如,test1函數(shù)的返回值設(shè)置為 return 6, 那么就把6賦值給test2,test2就不再是一個函數(shù),而是一個int類型的變量,值就是6):
def test1(A):
print("I am test1111111111")
@test1
def test2():
print("I am test2222222222")
test2
print(type(test2))
輸出如下:
I am test1111111111 <class 'NoneType'>
Nonetype和空值是不一致的,可以理解為Nonetype為不存在這個參數(shù),空值表示參數(shù)存在,但是值為空
為了避免這個問題,可以使用wraps函數(shù),它的作用是保證被修飾函數(shù)名不被改變
from functools import wraps
def test1(A):
@wraps(A)
def test3():
print("I am test3333333")
print("I am test1111111111")
return test3
@test1
def test2():
print("I am test2222222222")
test2
print(test2.__name__)
test2()
輸出如下:
I am test1111111111 test2 I am test3333333
可以看到,test2函數(shù)的函數(shù)名沒被改變,但函數(shù)功能卻改變了,18行運行test2函數(shù)時,輸出的是 I am test3333333
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python簡單實現(xiàn)圖片轉(zhuǎn)字符畫的實例項目
這篇文章主要介紹了Python簡單實現(xiàn)圖片轉(zhuǎn)字符畫的實例項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法
這篇文章主要介紹了詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01
Tensorflow 2.4 搭建單層和多層 Bi-LSTM 模型
這篇文章主要為大家介紹了Tensorflow 2.4 搭建單層 Bi-LSTM 模型和多層 Bi-LSTM 模型的實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01
Python Pandas模塊實現(xiàn)數(shù)據(jù)的統(tǒng)計分析的方法
在上一篇講了幾個常用的“Pandas”函數(shù)之后,今天小編就為大家介紹一下在數(shù)據(jù)統(tǒng)計分析當中經(jīng)常用到的“Pandas”函數(shù)方法,希望能對大家有所收獲,需要的朋友可以參考下2021-06-06
python用opencv批量截取圖像指定區(qū)域的方法
今天小編就為大家分享一篇python用opencv批量截取圖像指定區(qū)域的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01

