我需要調用一個多參數的功能很多次,而所有,但一個參數是固定的。我在考慮使用裝飾的:設置參數
# V1 - with @decorator
def dec_adder(num):
def wrap(fun):
def wrapped_fun(n1):
return fun(n1, second_num=num)
return wrapped_fun
return wrap
@dec_adder(2)
def adder(first_num, second_num):
return first_num + second_num
print adder(5)
>>> 7
但因爲它似乎調用2參數功能,adder
只有一個說法,這似乎令人困惑。
另一種方法是使用使用本地變量從父函數嵌套函數定義:
# V2 - without @decorator
def add_wrapper(num):
def wrapped_adder(num_2):
return num + num_2
return wrapped_adder
adder = add_wrapper(2)
print adder(5)
>>> 7
但我毫不猶豫地使用這種方法,因爲在我的實際執行的包裹功能是非常複雜的。我的直覺是它應該有一個獨立的定義。
原諒我,如果這個企業到輿論的境界,但兩種方法認爲是更好的設計和/或更Python?我應該考慮一些其他方法嗎?
這是非常乾淨的。謝謝。 – andrew