gpt4 book ai didi

python - python中函数的字典输入

转载 作者:太空宇宙 更新时间:2023-11-04 09:19:07 25 4
gpt4 key购买 nike

我看到了一些像下面这样的代码:

params = {
'username': username,
'password': password,
'attended': attended,
'openid_identifier': openid_identifier,
'multistage': (stage and True) or None
}
ret = authmethod.login(request, userobj, **params)

登录是这样实现的

  def login(self,request,user_obj,**kw):
username = kw.get('username')
password = kw.get('password')

所以我们知道 kw 是一个字典,但是我不知道 ** 的意思,它是不是类似于 C 语言中的指针?是用来输入字典作为引用吗。

谢谢你,如果你能回答我。

最佳答案

基本上这就是它的意思:

如果不使用**kw,您需要在其签名中列出login 的所有输入参数。

现在,您正在调用login 函数并且您知道login 的参数是什么变量名。所以如果你有很多参数,很难始终记住参数的顺序。

因此,您通过命名参数的变量名称并将它们设置为等于您要传递给它的值来调用参数的 login。可以这样想:

如果不使用 **kw,您可以这样做:

def say(phrase):
print phrase

say("Hello, World!")

但是,通过使用 **kw,您可以这样做:

def say(**kw):
phrase = kw.get('say_what')
print phrase

say(**{'say_what':"Hello, World!"})

现在发生的事情是,使用 ** 以这样一种方式解压字典,它告诉 say 它期望什么作为名为 say_what 的输入参数 的值为 "Hello, World!"

上面的例子不是使用**kw的最佳地方,因为只有一个输入参数。但是,如果您有一个带有长签名的函数,那么期望任何程序员准确记住必须以何种顺序将哪些参数传递给该函数是不合理的。

如果(您和)程序员使用**kw,那么程序员可以指定一个字典,将输入参数的变量名称(作为字符串)映射到它们的值。函数会处理剩下的事情,程序员不必关心将参数传递给函数的顺序

希望对你有帮助

关于python - python中函数的字典输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4989850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com