你认为哪三个是更好的编码风格,还是更可读?foo应该在两个字典中的项上运行,但是mydict2可以是None
选项1:

for a,b in mydict1.items():
    foo(a,b)
if mydict2:
    for a,b in mydict2.items():
        foo(a,b)

选项2:
for a,b in mydict1.items():
    foo(a,b)
for a,b in mydict2.items() if mydict2 else dict().items():
    foo(a,b)

选项3:
for a,b in chain(mydict1.items(), mydict2.items() if mydict2 else dict().items()):
    foo(a,b)

最佳答案

尽早检测边盒,并用一个空的dict替换它-这是null object pattern

if mydict2 is None:
     mydict2 = {}

这与用于避免可变默认参数的通用模式相同。然后您可以始终有一个(非常简单)循环:
for a, b in chain(mydict.items(), mydict2.items()):

如果你控制相关代码,首先考虑改变事物,以便mydict2不能是None

07-28 03:58