Python 中的 Walrus 運算子 :=

Manav Narula 2022年5月18日
Python 中的 Walrus 運算子 :=

Python 使用者在進行新更改時會收到定期更新,並且每次更新都會新增功能。在 Python 3.8 中,引入了 Walrus 運算子 :=。這是一個賦值運算子。

我們將在本教程中討論 Walrus 運算子。

Python 中的 Walrus 運算子

與分配值的傳統賦值運算子 = 不同,Walrus 運算子:= 可以分配值並同時返回變數。此運算子對於在表示式中分配值很有幫助。

在使用此運算子時,我們使用括號為變數賦值。

例如:

(a := 5)
print(a)

輸出:

5

Walrus 運算子很有用,因為它允許我們在許多情況下避免重複語句。我們可以在表示式的上下文中將值分配給可能尚不存在的變數。

a = [1, 2, 3]
if (n := len(a)) > 5:
    pass
print(n)

輸出:

3

如果我們使用傳統的賦值運算子,上面的程式碼會報錯。然而,由於我們使用了 Walrus 運算子,我們可以在表示式中定義 n 的值並在之後使用它。

現在讓我們再舉一個例子。

a = [1, 2, 3]
d = {1: len(a), 2: sum(a), 3: sum(a) / len(a)}
print(d)

輸出:

{1: 3, 2: 6, 3: 2.0}

在上面的例子中,我們計算了兩次列表的長度和總和。我們可以使用 Walrus 運算子來避免這種情況。

使用此運算子,我們可以在表示式中為長度和總和分配變數。

例如:

a = [1, 2, 3]
d = {1: (n := len(a)), 2: (s := sum(a)), 3: (n / s)}
print(d, n, s)

輸出:

{1: 3, 2: 6, 3: 0.5} 3 6

在這裡,我們使用 Walrus 運算子在表示式中分配變數 ns。然後,我們在表示式中使用這些變數並在之後顯示它們。

作者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

相關文章 - Python Operator