大多数pythonic可调用生成True?

PiC*_*CTo 12 python generator

该类collections.defaultdict采用默认工厂,用于生成默认值。

如果包含在dict-like 对象中的值应默认为False,则可以将实例创建为:

d_false = defaultdict(bool)
Run Code Online (Sandbox Code Playgroud)

为默认值实现相同的最pythonic 的方法是True什么?

换句话说,是否有一个标准的可调用对象返回True,它习惯上用作bool?

当然,工厂可以构建为 lambda 表达式:

d_true = defaultdict(lambda: True)
Run Code Online (Sandbox Code Playgroud)

但这可能是在重新发明轮子。

And*_*ely 12

嗯,你可以

d = defaultdict(True.__bool__)
Run Code Online (Sandbox Code Playgroud)

但我个人会选择lambda: True.

  • 正如 @Aran-Frey 上面所说,你不能用 lambda 来“pickle”一个 defaultdict;因此,如果这是一个考虑因素,那么“True.__bool__”就是正确的选择。但这绝对是一个更丑陋的解决方案。(另外,在 Python 2.x 中不可用,距离 EOL 只有一个月的时间,这可能并不重要......) (5认同)

cdl*_*ane 5

我们可以使用partial作为替代lambda

from functools import partial
from collections import defaultdict

d_true = defaultdict(partial(bool, True))

print(d_true['bona fide'])
Run Code Online (Sandbox Code Playgroud)

(这也是 Python 2 友好的。)