新增的語法 :=
可在表達(dá)式內(nèi)部為變量賦值。
它被昵稱為“海象運算符”因為它很像是 海象的眼睛和長牙。
在這個示例中,賦值表達(dá)式可以避免調(diào)用 len() 兩次:
n = len(a) if n>10: print(f"List is too long ({n} elements, expected <= 10)")
if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)")
位置形參
新增了一個函數(shù)形參語法 / 用來指明某些函數(shù)形參必須使用僅限位置而非關(guān)鍵字參數(shù)的形式。
在下面的例子中,形參 a 和 b 為僅限位置形參校读,c 或 d 可以是位置形參或關(guān)鍵字形參,而 e 或 f 要求為關(guān)鍵字形參:
位置形參a,b/位置形參或關(guān)鍵字形參*關(guān)鍵字形參
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
以下均為合法的調(diào)用:
f(10, 20, 30, d=40, e=50, f=60)
但是祖能,以下均為不合法的調(diào)用:
f(10, b=20, c=30, d=40, e=50, f=60) # b cannot be a keyword argument
f(10, 20, 30, 40, 50, f=60) # e must be a keyword argument
由于在 / 左側(cè)的形參不會被公開為可用關(guān)鍵字歉秫,其他形參名仍可在 **kwargs 中使用:
def f(a, b, /, **kwargs):
print(a, b, kwargs)
f(10, 20, a=1, b=2, c=3) # a and b are used in two ways
10 20 {'a': 1, 'b': 2, 'c': 3}