单行保存if语句的价值?

Flo*_*ian 3 python variables if-statement

是否有一种聪明的方法可以在三行或四行中编写以下代码?

a=l["artist"]
if a:
    b=a["projects"]
    if b:
        c=b["project"]
        if c:
            print c
Run Code Online (Sandbox Code Playgroud)

所以我想像伪代码一样:

a = l["artist"] if True:
Run Code Online (Sandbox Code Playgroud)

Jed*_*Fox 8

怎么样:

try:
    print l["artist"]["projects"]["project"]
except KeyError:
    pass
except TypeError:
    pass # None["key"] raises TypeError. 
Run Code Online (Sandbox Code Playgroud)

这将tryprint的价值,但如果KeyError上升时,except块将被运行.pass意味着什么也不做.这是已知的,EAFP:这是ê asier到一个 SK ˚F orgiveness比P ermission.


Jul*_*nck 5

我不一定认为这更好但你可以这样做:

try:
    c = l["artist"]["projects"]["project"]
except (KeyError, TypeError) as e:
    print e
    pass
Run Code Online (Sandbox Code Playgroud)

  • 可能更好地使用`除了KeyError`. (5认同)