首页 > 解决方案 > 使用或不带参数调用方法?

问题描述

有没有办法缩短这个或跳过 if-else 检查:

 if kv is None : self.obj.generate()
 else : self.obj.generate(**kv)

标签: pythonarguments

解决方案


试试这个代码:

li = [{},kv]
self.obj.generate(**li[bool(kv)])
  1. 您为 2 个结果生成一个 2 元素列表。

  2. 您使用列表中的两个元素之一调用您的方法;bool(kv) 是你的开关。

如果 kv 为 None(或 0),则 bool(kv) 变为 False(相当于 0)

如果 kv 不是 None,bool(kv) 变为 True(相当于 1)

当然,您可以在一行中完成所有操作:

self.obj.generate(**[{},kv][bool(kv)])

推荐阅读