在寻找包源代码中的一些答案(特定的漏勺)时,我偶然发现了一个我无法理解的字符串.我的PyCharm对此皱眉,'声明似乎没有效果'.
这是代码摘要:
...
for path in e.paths():
keyparts = []
msgs = []
for exc in path:
exc.msg and msgs.extend(exc.messages()) # <-- what is that?
keyname = exc._keyname()
keyname and keyparts.append(keyname) # <-- and that
errors['.'.join(keyparts)] = '; '.join(interpolate(msgs))
return errors
...
Run Code Online (Sandbox Code Playgroud)
它似乎是非常pythonic,我想掌握它!
UPD.因此,我认为它根本不是pythonic - 可读性因速记而受到损害.
hap*_*ave 15
如果keyname的计算结果为False,则该and语句将立即返回false,而不是评估第二部分.否则,它将评估第二部分(而不是在这种情况下返回值很重要).所以它基本上相当于:
if keyname:
keyparts.append(keyname)
Run Code Online (Sandbox Code Playgroud)
我不确定它是非常pythonic,因为我刚建议的版本似乎更具可读性(至少对我个人而言).