What is the Walrus Operator?
Python 3.8 introduces the creatively named "walrus" operator. Expressed via :=
, the walrus operator allows you to assign values to a variable as part of an expression. The key benefit to this new operator is that it reduces the amount of written code required.
Previously if we wanted to assign a variable and print its value, you would have done something like this:
>>> device_type = "router"
>>> print(device_type)
router
In Python 3.8, you’re allowed to combine these two statements into one, using the walrus operator:
>>> print(device_type := "router")
router
Example
Let us build the context of our example out some more. Let’s say we have a simple dict()
containing some device data, like so:
device_data = [
{"device_type": "router", "name": "rtr001"},
{"device_type": "switch", "name": "sw001"},
{"device_type": "firewall", "name": "fw001"}
]
The code typically required would look something like the below:
# Without Walrus Operator
for device in device_data:
name = device.get("name")
if name:
print(f'Found name: "{name}"')
If we now use the walrus operator, we can collapse our if
condition and the name
assignment into a single line like so:
# With Walrus Operator...
for device in device_data:
if name := device.get("name"):
print(f'Found name: "{name}"')