gpt4 book ai didi

python - 全局名称 'key' 未定义

转载 作者:行者123 更新时间:2023-11-28 19:13:14 24 4
gpt4 key购买 nike

我有一个循环运行的 python 程序来计算存储桶中的键数,当它有一个或多个键时它工作正常。当它有 0 个对象时它会抛出错误。

def CdmCount(Destbucket):
global key
totalcdms = 0
for key in Destbucket.get_all_keys():
totalcdms += 1
print totalcdms
assert isinstance (key,object )
return (totalcdms, key)

我看到以下错误:

  File "check_fun.py", line 24, in CdmCount
return (totalcdms, key)
NameError: global name 'key' is not defined

完整代码http://pastebin.com/QrAwL4Dq

更新:

在我添加了一个上层的 boto 函数来列出存在的键数之后,如果它为零则退出。

    keys = list(Destbucket.list())
if not keys:
print "List is empty"
sys.exit(2)

这是一个好的方法吗?

最佳答案

您的代码已到达 assert 语句,而尚未将值分配给 key 因此未定义。此处不使用全局变量也会触发错误(UnboundLocalError: local variable 'key' referenced before assignment)。

在这里使用全局变量似乎不合理,您应该考虑使用函数返回值。

另外,使用同名的多个变量也是不好的做法。在这种情况下,您正在定义 global key,然后再次将 key 重新定义为循环中的迭代变量。这样的事情会更好:

global key
for k in keys:
if some_condition == k:
key = k
...

关于python - 全局名称 'key' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37248010/

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