是否有可能有条件地将任意数量的命名默认参数传递给Python函数?
例如.有一个功能:
def func(arg, arg2='', arg3='def')
Run Code Online (Sandbox Code Playgroud)
现在的逻辑是我有一个条件来确定是否需要传递arg3,我可以这样做:
if condition == True:
func('arg', arg2='arg2', arg3='some value')
else:
func('arg', arg2='arg2')
Run Code Online (Sandbox Code Playgroud)
问题是,我可以用速记如下:
func('arg', 'arg2', 'some value' if condition == True else # nothing so default gets picked
)
Run Code Online (Sandbox Code Playgroud) 在Django ORM中,如何创建始终为False的Q对象?
这类似于关于始终为True Q对象的问题,但反过来说.
请注意,这不起作用:
Foobar.objects.filter(~Q()) # returns a queryset which gives all objects
Run Code Online (Sandbox Code Playgroud)
为什么我需要Q对象而不是简单的False值?这样我就可以将它与其他Q值结合起来,例如:
condition = always_true_q_object
if something_or_other:
condition = condition | foobar_that_returns_a_q_object()
if something_or_other2:
condition = condition | foobar_that_returns_a_q_object2()
Run Code Online (Sandbox Code Playgroud)