具有许多可选参数的Python函数
我目前有一个带有许多可选参数的函数,如下所示:具有许多可选参数的Python函数,python,design-patterns,Python,Design Patterns,我目前有一个带有许多可选参数的函数,如下所示: def many_argument_function(required1, required2, optional1=1, optional2=2, optional3=None, optional4="Test", optional5="g", optional6=2, optional7=(0, 255, 0), optional8=0.
def many_argument_function(required1, required2, optional1=1, optional2=2,
optional3=None, optional4="Test", optional5="g",
optional6=2, optional7=(0, 255, 0), optional8=0.5):
# Do stuff
但实际上,它有20多个可选参数,即使有120个字符的行限制,它们也会占用5行
是否有一种设计模式可以简化/使其更美观
另外,我考虑过为这个函数创建一个单独的配置文件,但是调用它会很烦人,因为大多数时候只使用一个或两个可选参数
EDIT1:我不想使用
kwargs
,因为我希望参数的名称和默认值在我的IDE中可见(PyCharm)每行只列出一个参数没有什么错
def many_argument_function(
required1,
required2,
optional1=1,
optional2=2,
optional3=None,
optional4="Test",
optional5="g",
optional6=2,
optional7=(0, 255, 0),
optional8=0.5
):
"""
This function does some stuff.
"""
# Do stuff
PEP 8,虽然它自己的示例将多个参数放在一行上,但我发现如果每个参数都在自己的行上,那么扫描一个大的参数列表要容易得多。每行只列出一个参数没有什么错
def many_argument_function(
required1,
required2,
optional1=1,
optional2=2,
optional3=None,
optional4="Test",
optional5="g",
optional6=2,
optional7=(0, 255, 0),
optional8=0.5
):
"""
This function does some stuff.
"""
# Do stuff
PEP 8,虽然它自己的示例在一行上放置了多个参数,如果每个参数都在自己的行上,我发现扫描一个大的参数列表要容易得多。可能的重复我不想使用
kwargs
,因为我希望名称和默认值在IDE中可见。难道你不能将选项放入列表并传递list@vash_the_stampede在python中,如果有一个列表作为参数的默认值,那么它是可变的,所以不能这样做。不,我是说不要使用默认值,只传递一个包含所有默认变量的列表,如果您有更改,您可以使用更改创建一个列表副本,并传递可能重复的“我不想使用kwargs
”因为我希望名称和默认值在IDE中可见。难道你不能将选项放入列表并传递list@vash_the_stampede在python中,如果有一个列表作为参数的默认值,那么它是可变的,所以不能这样做。不,我是说不要使用默认值,只传递一个包含所有默认变量的列表,如果你有更改,你可以用更改创建一个列表副本,并传递它