'Python - assign value and check condition in IF statment

I have this code:

str = func(parameter)
if not str:
   do something.

the function func() return a string on success and '' on failure. The do something should happen only if str actualy contain a string.

Is it possible to do the assigmnt to str on the IF statment itself?



Solution 1:[1]

In one word: no. In Python assignment is a statement, not an expression.

Solution 2:[2]

Why not try it yourself,

if not (a = some_func()):
  do something
      ^
SyntaxError: invalid syntax

So, no.

Solution 3:[3]

With the below code snippet, if the func returns a string of length > 0 only then the do something part will happen

str = func(parameter)
if str:
   do something

Solution 4:[4]

You can try this, it's the shortest version I could come up with:

if func(parameter):
   do something.

Solution 5:[5]

PEP 572 added syntax for assignment expressions. Specifically, using := (called the "walrus operator") for assignment is an expression, and thus can be used in if conditions.

if not (thing := findThing(name)):
    thing = createThing(name, *otherArgs)

Note that := is easy to abuse. If the condition is anything more complex than a direct test (i.e. if value := expresion:) or a not applied to the assignment result (such as in the 1st sample above), it's likely more readable to write the assignment on a separate line.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 bruno desthuilliers
Solution 2 Net Myth
Solution 3 Gopi Vinod Avvari
Solution 4 user3543300
Solution 5