Fix Python – How should I put try/except in a single line?

Question

Asked By – Brant

Is there a way in python to turn a try/except into a single line?

something like…

b = 'some variable'
a = c | b #try statement goes here

Where b is a declared variable and c is not… so c would throw an error and a would become b

Now we will see solution for issue: How should I put try/except in a single line?


Answer

There is no way to compress a try/except block onto a single line in Python.

Also, it is a bad thing not to know whether a variable exists in Python, like you would in some other dynamic languages. The safer way (and the prevailing style) is to set all variables to something. If they might not get set, set them to None first (or 0 or '' or something if it is more applicable.)


If you do assign all the names you are interested in first, you do have options.

  • The best option is an if statement.

    c = None
    b = [1, 2]
    
    if c is None:
        a = b
    else:
        a = c
    
  • The one-liner option is a conditional expression.

    c = None
    b = [1, 2]
    a = c if c is not None else b
    
  • Some people abuse the short-circuiting behavior of or to do this. This is error prone, so I never use it.

    c = None
    b = [1, 2]
    a = c or b
    

    Consider the following case:

    c = []
    b = [1, 2]
    a = c or b
    

    In this case, a probably should be [], but it is [1, 2] because [] is false in a boolean context. Because there are lots of values that can be false, I don’t use the or trick. (This is the same problem people run into when they say if foo: when they mean if foo is not None:.)

This question is answered By – Mike Graham

This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0