第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

如何使用裝飾器引入功能和參數(shù)?

如何使用裝飾器引入功能和參數(shù)?

我有一段代碼,如下所示:def range_print(n, *args):    for i in range(n):        func(i)@range_print(n=10)def func(i):    print(i)我得到:TypeError                                 Traceback (most recent call last)<ipython-input-4-b13e44263521> in <module>      2     for i in range(n):      3         func(i)----> 4 @range_print(n=10)      5 def func(i):      6     print(i)<ipython-input-4-b13e44263521> in range_print(n, *args)      1 def range_print(n, *args):      2     for i in range(n):----> 3         func(i)      4 @range_print(n=10)      5 def func(i):TypeError: 'NoneType' object is not callable后來我解決了這個(gè)問題,但我不知道有沒有更好的方法?我想使用裝飾器使我的代碼看起來更干凈。def range_print(n, *args):    def inner(func): # <----Why do I need this def to load func?        for i in range(n):            func(i)    return inner@range_print(n=10)def func(i):    print(i)
查看完整描述

1 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊

該函數(shù)將函數(shù)作為參數(shù)的原因是,當(dāng)您向函數(shù)添加類似裝飾器時(shí),這就是Python的機(jī)制的工作方式。inner@range_print(n=10)

調(diào)用函數(shù)時(shí),Python 會將函數(shù)本身及其參數(shù)傳遞給裝飾器。range_print

因此,在您的情況下,函數(shù)簽名中指定的參數(shù)實(shí)際上是一個(gè)函數(shù)。nrange_print


查看完整回答
反對 回復(fù) 2022-09-06
  • 1 回答
  • 0 關(guān)注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號