gpt4 book ai didi

Python *args 属性错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:53:59 24 4
gpt4 key购买 nike

谁能帮我弄清楚为什么第一个代码有效而第二个无效?:

工作代码

alias = []
alias.append(cx_Oracle.connect('%s/%s@%s' % (username, password, base)))
solve(*alias, **binds)

def solve(*alias, **binds):
cur = alias[0].cursor()

代码无效

alias = []
alias.append(cx_Oracle.connect('%s/%s@%s' % (username, password, base)))
solve(alias, binds)

def solve(*alias, **binds):
cur = alias[0].cursor()

错误

AttributeError: 'list' object has no attribute 'cursor'

*** 谢谢大家!这非常有帮助!

最佳答案

出现此问题是因为在第二种情况下,由于在将列表或字典作为参数传递给函数时没有解压缩列表或字典,因此它们被传递到 alias 中(在 solve 中函数 alias 的第一个元素是列表 aliasalias 的第二个元素是字典 binds ) .

展示这个的例子-

>>> def a(*nargs, **kwargs):
... print('nargs : ',nargs)
... print('kwargs : ',kwargs)
...
>>> x = [1,2,3]
>>> d = {'a':2,'b':4}
>>> a(*x,**d)
nargs : (1, 2, 3)
kwargs : {'a': 2, 'b': 4}
>>> a(x,d)
nargs : ([1, 2, 3], {'a': 2, 'b': 4})
kwargs : {}

关于Python *args 属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32127159/

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