【发布时间】:2017-11-08 22:38:41
【问题描述】:
这可能与传统的 *args **kwargs 范例有点不同:
我有一个以三个独立参数作为输入的数学函数,但是,它也可以通过指定三个中的任意两个来解决(非紧凑)。
目前,我有严格基于 a 和 b 的非紧凑解决方案,其中 c 作为可选约束:
def func(a,b,c=None):
if c is not None:
# do something with a, b, and c
else:
# do something with only a, b
return result
但是,我希望能够指定 a、b 或 c 中的任意两个,并且仍然保留指定所有三个的选项。最 Pythonic 的方式是什么?
【问题讨论】:
-
为了区别,无论如何你都需要它们是 kwargs,不是吗?那么
**kwargs方法有什么问题呢? -
给他们
None的所有默认值,然后将它们作为关键字参数传递。 -
就您的实际功能块而言,您可能想做一个
try: [do something with a, b, and c,然后在except 块中查看抛出了什么异常并决定如何从那里继续。跨度>
标签: python python-3.x optional-parameters