Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有许多可选参数的Python函数_Python_Design Patterns - Fatal编程技术网

具有许多可选参数的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中,如果有一个列表作为参数的默认值,那么它是可变的,所以不能这样做。不,我是说不要使用默认值,只传递一个包含所有默认变量的列表,如果你有更改,你可以用更改创建一个列表副本,并传递它