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

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

Python:通過修復其他參數來減少函數中參數數量的裝飾器

Python:通過修復其他參數來減少函數中參數數量的裝飾器

一只萌萌小番薯 2022-11-18 14:09:44
假設我有這個功能def add(a,b,c): return a+b+c我想要一個固定 b 值的裝飾器,比如 5,并返回一個只有兩個參數 a 和 c 的函數。def add5(a,c): return a+c+5函數 add5 不應有任何其他參數。我不想用 b 的默認參數來解決這個問題。
查看完整描述

3 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

您可以使用functools.partial:


functools.partial(func, /, *args, **關鍵字)


返回一個新的部分對象,當調用該對象時,其行為類似于使用位置參數 args 和關鍵字參數 keywords 調用的 func。


from functools import partial


def add(a,b,c):

    return a+b+c

如果你想給第一個位置參數一個固定的值,你可以這樣做


add5 = partial(add, 5)

print(add5(1, 2))

# 8

由于第一個位置參數 (a) 將替換為 5,因此您不能:


print(add5(a=3, b=4))

# TypeError: add() got multiple values for argument 'a'

如果要控制修復哪個參數,請使用關鍵字參數:


add5 = partial(add, b=5)

print(add5(a=1, c=2))

# 8


查看完整回答
反對 回復 2022-11-18
?
森林海

TA貢獻2011條經驗 獲得超2個贊

在 Python 中,函數是第一類對象,這意味著 –


函數是對象;它們可以被引用,傳遞給變量,也可以從其他函數返回。


函數可以在另一個函數中定義,也可以作為參數傳遞給另一個函數。


裝飾器是 Python 中非常強大和有用的工具,因為它允許程序員修改函數或類的行為。裝飾器允許我們包裝另一個函數以擴展包裝函數的行為,而無需永久修改它。


在裝飾器中,函數被作為另一個函數的參數,然后在包裝函數內部被調用。


在你的情況下:


def my_custom_decorator(f):

    def outer_function(*args):

        res = f(*args)

        return res + 5

    return outer_function



@my_custom_decorator

def A_and_C(a, c):

    return a+c



print(A_and_C(2,3))


查看完整回答
反對 回復 2022-11-18
?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

你可以這樣做


def add5(*arg):

    return sum(args)+5


print(add5(1,2))

這將對您傳遞給函數的所有參數求和,并將 5 添加到參數的總和中。輸出


8


查看完整回答
反對 回復 2022-11-18
  • 3 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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