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

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

當(dāng)我調(diào)用內(nèi)部/裝飾函數(shù)時(shí),我可以將參數(shù)傳遞到裝飾器函數(shù)中嗎?

當(dāng)我調(diào)用內(nèi)部/裝飾函數(shù)時(shí),我可以將參數(shù)傳遞到裝飾器函數(shù)中嗎?

慕桂英4014372 2023-09-19 14:49:17
希望這個(gè)術(shù)語(yǔ)是正確的。我有這個(gè)裝飾器函數(shù),它讀取一個(gè)文本文件:def read_commands(inner, path=BATCH_PATH):    with open(path) as f:        commands = ['python ' + line.replace('\n', '') for line in f]    def wrapper(*args, **kwargs):        for command in commands:            inner(command, *args, **kwargs)    return wrapper這是它裝飾的功能之一:@read_commandsdef execute_multi_commands(command, count):    LOG.info(f'Executing command {count}: {command}')    os.system(command)    count += 1我希望能夠在調(diào)用時(shí)更改默認(rèn)路徑execute_multi_commands,就像我的main:def main():    parser = argparse.ArgumentParser()    parser.add_argument('-b', '--batch', action='store', type=str, dest='batch')    args = parser.parse_args()        count = 1    execute_multi_commands(count, path=args.batch)然而,顯然這不起作用,因?yàn)閜athis not a argument in execute_multi_commands. 當(dāng)我調(diào)用時(shí),我是否可以傳遞path給裝飾器函數(shù)?- 或者,更有可能的是,任何功能等效的替代方案?read_commandsexecute_multi_commands
查看完整描述

1 回答

?
白豬掌柜的

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

你不能,至少你的裝飾器的編寫(xiě)方式是這樣。當(dāng)你裝飾一個(gè)函數(shù)時(shí),它類似于:


def execute_multi_commands(command, count):

    LOG.info(f'Executing command {count}: {command}')

    os.system(command)

    count += 1


execute_multi_commands = read_commands(execute_multi_commands)

所以在這之后,read_commands已經(jīng)被執(zhí)行了,并且文件已經(jīng)被讀取了。


您可以做的是更改裝飾器以讀取包裝器中的文件,例如:


def read_commands(inner, path=BATCH_PATH):


    def wrapper(*args, **kwargs):


        if "path" in kwargs:

            path_ = kwargs.pop("path")

        else:

            path_ = path


        with open(path_) as f:

            commands = ['python ' + line.replace('\n', '') for line in f]


        for command in commands:

            inner(command, *args, **kwargs)


    return wrapper

...但這意味著每次調(diào)用修飾函數(shù)時(shí)都會(huì)讀取該文件,這與您之前所做的略有不同。


查看完整回答
反對(duì) 回復(fù) 2023-09-19
  • 1 回答
  • 0 關(guān)注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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