两个奇怪的python运算符

简介

记录一下最近碰到的两个python里的运算符。

正文

1. **运算符 解包字典

正常来说,a**b是指,是指数运算符。但是在作为函数参数或字典内容时,**运算符可以用作字典解包。

例1

def func(a,b,c):
    print(f"a: {a}, b: {b}, c: {c}")
x = {"a" : 1, "b": 2, "c": 3} # 要和函数的变量名对应上,不然会报错
func(**x)

输出为

a: 1, b: 2, c: 3

如果函数变量名称不匹配,会出现以下报错

TypeError: 'a' is an invalid keyword argument for this function

也可以用来在字典中进行解包

例2

x = {"a" : 1, "b": 2, "c": 3}
y = {"d" : 4}
print({**x, **y})

输出为

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

2. @运算符 矩阵点乘

>>>A = np.array([[1,2],[3,4]])
>>>B = np.array([[1,2],[3,4]])
>>>A@B
array([[ 7, 10],
       [15, 22]])
>>>np.dot(A,B)
array([[ 7, 10],
       [15, 22]])
>>>np.multiply(A,B)
array([[ 1,  4],
       [ 9, 16]])
>>>A*B
array([[ 1,  4],
       [ 9, 16]])

简洁明了,就是点乘的函数重载了@运算符。

你可能感兴趣的:(两个奇怪的python运算符)