DEV Community

loading...

#Day10 - Walrus Operator in Python

rahulbanerjee99 profile image Rahul Banerjee Originally published at realpythonproject.com ・2 min read

In today's article, we will talk about the Walrus Operator := in Python. The walrus operator is an assignment operator which was introduced in Python 3.8. But it is not just an assignment operator, it also returns the value after the assignment.

This is the general syntax of the walrus operator

(var := expression/ function)
Enter fullscreen mode Exit fullscreen mode

Although the parenthesis is not necessary, it is a good practice

So what does the Walrus operator do?

  • The value of the expression is assigned to the variable var
  • After assignment, the value is also returned.

Before Python 3.8, if you wanted to assign the value returned by an expression/function to a variable and print the value, below is how you would do it

var = expression/function
print(var)
Enter fullscreen mode Exit fullscreen mode

But using the walrus operator, this can be done in a single line

print(var := expression/function)
Enter fullscreen mode Exit fullscreen mode

Let's compare some code snippets with and without the walrus operator

Print statements

Python 3.7

def func(x):
    return x+1

var = 0
var = func(var)
print(var)
Enter fullscreen mode Exit fullscreen mode

Python 3.8

def func(x):
    return x+1

var = 0
print( var := func(var) )
Enter fullscreen mode Exit fullscreen mode

The value returned by the function func is first assigned to the variable var. After the assignment, the value is returned and the print statement displays it on the command line.

If statements

Python 3.7

lst = [1,2,3]
n = len(lst)
if n < 10:
    print("It is a small list")
print(n)

Enter fullscreen mode Exit fullscreen mode

Python 3.8

lst = [1,2,3]
if (n:= len(lst)) < 10:
    print("It is a small list")
print(n)
Enter fullscreen mode Exit fullscreen mode

while loop

Python 3.7

n = 0
while(n < 10):
    print(n)
    n +=1
Enter fullscreen mode Exit fullscreen mode

Python 3.8

n = 0
while(n := n +1) < 10:
    print(n)
Enter fullscreen mode Exit fullscreen mode

Lists

Python 3.7

def func(x):
    return x + 1

y = func(2)
lst = [y , y*y , y*y*y]
print(lst)
Enter fullscreen mode Exit fullscreen mode

Python 3.8

def func(x):
    return x + 1

lst = [y:=func(2),y*y,y*y*y]
print(lst)
Enter fullscreen mode Exit fullscreen mode

List Comprehension

Python 3.7

def computationally_expensive_function(x):
    '''
    Imagine this is some computatationally expensive function
    '''
    return 2

nums = [1,2,3]

lst = [computationally_expensive_function(num) for num in nums if computationally_expensive_function(num) > 0]
print(lst)
Enter fullscreen mode Exit fullscreen mode

Python 3.8

def computationally_expensive_function(x):
    '''
    Imagine this is some computatationally expensive function
    '''
    return 2

nums = [1,2,3]

lst = [var for num in nums if (var := computationally_expensive_function(num))> 0]
print(lst)
Enter fullscreen mode Exit fullscreen mode

Instead of calling the computation expensive function twice, we only call it once when using the walrus operator.

Discussion (0)

pic
Editor guide