如何将关键字参数的对象作为键

问题描述 投票:0回答:1

我想做的就是这样

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
python dictionary object kwargs
1个回答
0
投票

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") 
© www.soinside.com 2019 - 2024. All rights reserved.