例如,我有一个返回排列列表的基本方法。
import itertools
def perms(elements, set_length=elements):
data=[]
for x in range(elements):
data.append(x+1)
return list(itertools.permutations(data, set_length))
现在我明白了,在当前状态下,这段代码不会运行,因为第二个 elements
没有定义,但是有没有优雅的方式来完成我在这里尝试做的事情?如果还不清楚,我想让默认的 setLength
值等于传入的第一个参数。谢谢。
最佳答案
不,函数关键字参数默认值是在函数定义时确定的,而不是在函数执行时确定的。
将默认设置为 None
并检测到:
def perms(elements, setLength=None):
if setLength is None:
setLength = elements
如果您需要能够指定 None
作为参数,请使用不同的标记值:
_sentinel = object()
def perms(elements, setLength=_sentinel):
if setLength is _sentinel:
setLength = elements
现在调用者可以将 setLength
设置为 None
并且不会被视为默认值。
关于python - 有没有办法将默认参数设置为等于另一个参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17157272/