我想做的就是这样
class Foo:
something
def foo(**kwargs):
something
f = Foo()
foo(f=12) # f have to be recognized as a object not a str "f"
据我所知,kwargs是一本字典。
我测试过在字典中给一个对象作为键。并且有效。
dd = {f: 12}
print(dd)
>>>
{<__main__.Foo object at 0x00D685D0>: 12}
但是当我通过kwargs在函数参数中给出它时,它就变成了字符串。
有没有不会破坏原始语法的方式
function(obj=value, obj2=value2, ...)
不喜欢这样
function((obj, value), (obj2, value2), ...)
proper process to tuple
kwargs是一个字典,它将每个关键字映射到我们旁边传递的值。这就是为什么当我们遍历kwarg时似乎没有打印出来的顺序。
def myFun(**kwargs):
for key, value in kwargs.items():
print ("%s == %s" %(key, value))
# Driver code
myFun(first ='Geeks', mid ='for', last='Geeks')
您可以申请** args在参数前使用**符号,以将关键字参数字典传递给函数,当我们不知道将向该函数发送多少关键字参数时,该语法用于成功运行代码。
# function definition
def displayArgument(**arguments):
for arg in arguments.items():
print(arg)
# function call
displayArgument(argument1 ="hello", argument2 = 4,
argument3 ="code")