在python中,如何在代码中表示所需的参数和可选参数?

时间:2016-07-14 01:31:43

标签: python function

特别是当参数太多(10 + 20+)时。

对函数强制执行required/optional参数的好方法是什么?

有哪些好书可以解决python的这类问题? (比如c ++的有效c ++)

**编辑**

我认为当需要的参数太多时列出def foo(self, arg1, arg2, arg3, .. arg20, .....):是非常不切实际的。

3 个答案:

答案 0 :(得分:3)

参数可以是必需的或可选的,具体取决于它们在函数定义中的显示方式:

def myfunction(p1, p2, p3=False, p4=5)

在此定义中,需要参数p1p2p3是可选的,如果调用者未提供,则将获取值Falsep4也是可选的,如果未提供,则会获取值5

如果你真的需要将十个或更多参数传递给一个函数,最好将它们作为字典传递:

args = {'a': something, 'b': something_else, 'c': 5, 'd': 99.99, ... }
myfunc(args)

答案 1 :(得分:2)

如果不需要函数参数,则可以将其设置为None。

def hello(first_name, last_name=None):
    print "Hello " + first_name

或者正如John Gordon所说,你可以用同样的方式设置一个默认值的参数。

请注意,需要在所需参数之后定义可选参数。

答案 2 :(得分:0)

一种方法是将所需参数命名为func(a, b, c=1),这表示必需,因为如果缺少任何参数,代码将在运行时出错。然后,对于可选参数,您将使用Python的argskwargs

当然,任何时候使用Python的argskwargs都意味着需要额外的代码来从argskwargs中提取参数。

此外,对于每个可选参数组合,您需要编写一组条件控制流。

此外,您不需要太多可选分配,因为它会使代码的API变得复杂以便描述......并且控制流需要多行代码,因为对于每个附加可选项,可能的组合数量会非常快速地增长参数。

你的测试代码越来越快......