把这个放在下面功能。但是有什么想法吗?在
def zabbix_discovery(pingdom_data):
discovery = []
for k,v in data["recipes"].items():
discovery.append(
{"{#NAME}": str(v['name'])}
)
cmd_args = [
'zabbix_sender',
'-z', config.get('ZABBIX', 'server'),
'-p', config.get('ZABBIX', 'port'),
'-s', config.get('ZABBIX', 'host'),
'-k', config.get('ZABBIX', 'key1'),
'-o', "'{ \"data\": " + discovery + " }'"
]
zabbix_trapper(cmd_args)
====
^{pr2}$=
在函数调用中声明
discovery
之前,您正在使用它。在另外,当您在函数中声明它时,它将在它的末尾被销毁,并且在主作用域中不可用。在
您试图在调用为其赋值的函数
zabbix_discovery
之前访问它。即使您纠正了这个逻辑错误,您仍然无法访问discovery
变量,因为它是一个局部变量。您可以将return discovery
添加到函数的末尾,然后再添加discovery = zabbix_discovery(pingdom_data)
,或者使其成为全局变量。前者看起来有点像:此外,即使在修复这些问题时,代码也会抛出另一个错误,因为您试图在函数中访问dictionary
data
,而该字典也没有赋值。如果它被分配到函数之外的某个地方,您可以通过在函数的开头添加global data
来轻松解决这个问题。在如果你不在任何地方使用
pingdom_data
作为函数中的参数,为什么还要使用它呢?在相关问题 更多 >
编程相关推荐