Python代码中有很多类似的用法,第一次接触的时候还是有很多疑惑的,为了方便记忆,因此梳理了一下。
# 使用模型进行推理
with torch.no_grad():
outputs = model(**encoded_texts)
对于一个dict类型的变量**encoded_texts
是取出value的值,而不考虑键。
def test_func(**kwargs):
a = kwargs["a"]
b = kwargs["b"]
print(a) # [1, 2, 3]
print(b) # hello test
dct = {"a": [1, 2, 3], "b": "hello test"}
test_func(**dct)
函数传参的时候简化传参形式,无需指定参数名。
2024-06-17更新
函数传参使用
def func(a, b, c):
"""参数名和**kwargs传参的参数名和个数有关
顺序可以无关"""
print(a, b, c)
kwargs = {"a": 1, "b": 2, "c": 3}
func(**kwargs) # 1 2 3
kwargs2 = {"b": 1, "a": 2, "c": 3}
func(**kwargs2) # 2 1 3
两个字典合并
# **用于字典合并时,它用于合并多个字典。将一个字典的键值对合并到另一个字典中
# 如果存在相同的键,dct2中的值会覆盖dct1中的值。
dct1 = {"a": 1, "b": 2}
dct2 = {"c": 3, "d": 4}
merged_dict = {**dct1, **dct2}
print(merged_dict)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
202406-26 更新
def test_func(**kwargs):
c = kwargs.pop("c", "deflault value")
print(c) # deflault value
b = kwargs.pop("b", None)
a = kwargs.pop("a", None)
print(a) # [1, 2, 3]
print(b) # hello test
dct = {"a": [1, 2, 3], "b": "hello test"}
test_func(**dct)