2024-10-04 05:28:11 发布
网友
我正在使用这个函数
obj = myotherobj if obj is None else obj
我看到obj这个词用了三次。有没有办法在obj只出现一次的情况下编写这个函数
obj
你可以把它减少到两个:
if obj is None: obj = myotherobj
注意:如果obj不是None,则不需要将它赋给任何对象,因为在您的示例中obj显然已经被设置为您希望的值。你知道吗
由于Python中没有空合并操作符,因此2次出现可能是最好的结果。你知道吗
根据obj的truthiness,可以执行以下操作:
obj = obj or myotherobj
例如:
>>> obj = [] >>> obj = obj or 9000 >>> obj 9000 >>> obj = None >>> obj = obj or True >>> obj True
或者,如果它是return语句的一部分,则可以将其剪切为一个obj:
return obj or otherobj
>>> def foo(x): ... return x or 8 ... >>> foo(4) 4 >>> foo([]) 8 >>> foo(0) 8
如果这是一个code-golfing problem,您可以使用数组索引和布尔值做一些很酷的事情(但这不会减少obj标记的数量):
>>> obj=None >>> obj=[obj,9000][obj is None] >>> obj 9000
只是为了好玩,最可笑的是:
>>> obj = None >>> obj = (obj,[1,2,3])[::cmp(bool(obj),0.5)] >>> obj [1, 2, 3] >>> obj = True >>> obj = (obj,[1,2,3])[::cmp(bool(obj),0.5)] >>> obj True
但是以上两种方法通常都不推荐用于任何正常的生产代码。你知道吗
你可以把它减少到两个:
注意:如果
obj
不是None,则不需要将它赋给任何对象,因为在您的示例中obj
显然已经被设置为您希望的值。你知道吗由于Python中没有空合并操作符,因此2次出现可能是最好的结果。你知道吗
把它降到1个令牌实例
obj
是很困难的,但是有很多有趣的方法可以把它降到2个实例根据
obj
的truthiness,可以执行以下操作:例如:
或者,如果它是return语句的一部分,则可以将其剪切为一个
obj
:例如:
如果这是一个code-golfing problem,您可以使用数组索引和布尔值做一些很酷的事情(但这不会减少
obj
标记的数量):只是为了好玩,最可笑的是:
但是以上两种方法通常都不推荐用于任何正常的生产代码。你知道吗
相关问题 更多 >
编程相关推荐