【发布时间】:2022-01-23 23:55:54
【问题描述】:
我无法理解干净的方式来做到这一点。我想要一个名为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”的方法是什么?谢谢!
【问题讨论】:
-
该代码无效...
SyntaxError: 'continue' not properly in loop。您的意思是pass而不是continue? -
您可以使用keyword parameters。
-
@wjandrea 是的,只是作为仅包含函数头的一种方式
-
我认为三个单独的函数是正确的方法。您可以将公共部分分解为三个函数中的每一个调用的单个函数。
-
@chepner 我刚刚发布了一个答案。感谢您向我保证我走在正确的轨道上 :) 如果您对您的经验有任何补充,我将不胜感激。
标签: python python-3.x function overloading