【发布时间】:2022-11-14 03:44:44
【问题描述】:
我有一个带有大量参数的python函数:
def func(p1=0, p2=0, p3=0, p4=0, p5=0, ..., pN=0) -> None: pass
我想强制用户将参数设置为关键字参数。
我想到了一个对我来说似乎不合适的解决方案:
def func(*_, p1=0, p2=0, p3=0, p4=0, p5=0, ..., pN=0) -> None: pass
如果给出了不需要的有序参数,甚至将有序参数与无序参数分开,我什至可以引发错误:
def func(p1, p2, p3, *unwanted, p4=0, p5=0, p6=0, ..., pN=0) -> None:
if unwanted: raise TypeError
没看到有人这样,有问题吗?
【问题讨论】:
-
我不太确定我是否理解了这个问题,但试试
func(p1, p2, p3, *, p4=0, ..., pN=0) -
你实际上并不需要
_;*单独足以标记普通参数和仅关键字参数之间的“边界”。 (*_与*args相同:它是一个名为_的参数,它收集任何未分配给其他参数的位置参数。它可以还标记普通参数和仅关键字参数之间的界限。)
标签: python function arguments keyword-argument