有没有一种方法可以将表达式用作函数的关键字?

时间:2019-09-10 07:38:39

标签: python

我想知道是否可以使用表达式作为函数的关键字。

class A():
   def __init__(self, b):
      print(b)

a = A("test1")
a = A(b="test2")

kwrd = str("b")
a = A(kwrd="test3") #This part doesn't work but you get the idea

---------------------
Traceback (most recent call last):
File "test.py", line 85, in <module>
a = A(kwrd="test3")
TypeError: __init__() got an unexpected keyword argument 'kwrd'

我希望函数可以像关键字“ b”一样显示“ kwrd”。

有人知道吗?甚至有可能吗?

谢谢

2 个答案:

答案 0 :(得分:3)

创建字典并使用通常的**mapping命名实参扩展可能是最方便的方法:

kwrd = "b"
a = A(**{kwrd: "test3"})

# A(**{"b": "test3"})
# A(b="test3")

答案 1 :(得分:3)

在Python中,有一个称为“拆包”的功能,您可以为它拆包序列,以便将每个元素用作传递给函数的参数,并拆解字典,以便将每个条目用作关键字参数

# construct a dict to represent the keyword args you wanna pass
# with key being the keyword and value being the arg
your_args = {"b": "test123"}

a = A(**your_args)  # equivalent to calling A(b="test123")