我無法理解執行此操作的干凈方法。我想要一個set_delay()帶有各種引數的函式。我有 3 種不同的“延遲型別”可以設定:常量、統一和正常。這是我目前擁有的:
def set_delay_constant(delay):
continue
def set_delay_uniform(min_delay, max_delay):
continue
def set_delay_normal(mean, std_dev, timeout):
continue
我在上面遇到的問題是每個函式中大約 80% 的代碼被重復。我看到的想法是:
def set_delay(delay_type, delay=None, min_delay=None, max_delay=None, mean=None, std_dev=None, timeout=None):
continue
但是當我需要使用更多延遲型別擴展它時,我可以看到它變得非常長且難以閱讀。最“pythonic”的方法是什么?謝謝!
uj5u.com熱心網友回復:
不要使用多載。如果您要解決的問題是“每個函式中大約 80% 的代碼是重復的”,更好的解決方案是將該代碼分解為它自己的函式,_set_delay例如呼叫它,然后從每個函式中呼叫它的set_delay_*功能。
對我來說,多載只在引數重疊的地方有意義,但在你的情況下沒有。相比之下,假設我寫了range(10)但后來我意識到我想從 1 開始;由于多載,我可以簡單地將其更改為range(1, 10). 同時,如果我在你的提議中添加一個論點set_delay,我會得到完全不同的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/390113.html
下一篇:我正在創建一個函式,但此代碼出現TypeError:'int'objectdoesnotsupportitemassignment
