亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何丟棄函數參數中的 None 值

如何丟棄函數參數中的 None 值

largeQ 2024-01-16 15:14:07
我有一個函數df()對輸入 *args 執行一些操作:def df(*args):    for arg in args:        # do some computation我有這三個變量將作為 的參數df():a = 1234b = 4321c = None有什么方法可以在函數調用中“丟棄”這個非類型值嗎?我知道我可以在函數內添加一個條件,但就我而言,我還有更多函數也將接收這個值,那么有沒有什么方法可以在函數調用中“丟棄”某種參數?
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

從函數參數中過濾掉 None 的裝飾器:


def omit_none(f):

    def wrapper(*args):

        args = [arg for arg in args if arg is not None]

        return f(*args)

    return wrapper

然后用它作為


@omit_none

def df(*args):

    for arg in args:

        # do some computation

假設您不打算將關鍵字參數與受影響的函數一起使用。


如果我有其他函數 bar(user, *args) 并且我只需要在 args 上使用裝飾器


好的。這是一個更具適應性的版本:


def omit_none_from(index):

    def omit_none_from(func):

        def wrapper(*args):

            args = list(args[:index]) + [arg for arg in args[index:] if arg is not None]

            return func(*args)

        return wrapper

    return omit_none_from

您將其用作:


@omit_none_from(1)

def bar(user, *args):

    ...

這將從參數 1 開始過濾掉 None,因此它將保持第一個參數user不變。


查看完整回答
反對 回復 2024-01-16
  • 1 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號