如果条件为真,则传递关键字参数

问题描述:

是否有更符合pythonic的方式来执行此操作?如果条件为真,则传递关键字参数

if condition: 
    return f(x, y, z=1) 
else: 
    return f(x, y) 
+0

对于这样一段简单的代码,我不会担心会“更pythonic”。我会保持它,因为它是保持其可读性。 – Sayse

有条件地建立自己的kwargs:

kwargs = {} 
if condition: 
    kwargs['z'] = 1 

return f(x, y, **kwargs) 
+7

可能不是一个单一的kwarg最好的。 –

+2

当然,在这个特定情况下,你可以把它简化为更简单的东西,但这是我追求的一般方法。 – deceze

return f(x, y, z=condition) 

如果条件是布尔;)

+1

但''z''可能是一个数字,我们不知道默认值(对于我们所知的所有数据可能是“-1”或“None”)。 –

+0

的确如此。问题是,这个问题没有提供足够的英特尔... – campovski

你的解决方案看起来Python化不够,虽然可以使用一个三元条件将其压平:

return f(x, y, z=1) if condition else f(x, y)