如何获取每个返回值作为变量供以后使用?

How to get each returned value as variable for later use?

我正在尝试从这段代码中获取步行的返回值作为变量。

def walk(host, oid):

    for (errorIndication,
         errorStatus,
         errorIndex,
         varBinds) in nextCmd(SnmpEngine(),
                              CommunityData('public'),
                              UdpTransportTarget((host, 161)),
                              ContextData(),
                              ObjectType(ObjectIdentity(oid)),
                              lookupMib=False,
                              lexicographicMode=False):

        if errorIndication:
            print(errorIndication, file=sys.stderr)
            break

        elif errorStatus:
            print('%s at %s' % (errorStatus.prettyPrint(),
                                errorIndex and varBinds[int(errorIndex) - 1][0] or '?'), file=sys.stderr)
            break

        else:
            for oid, raw_value in varBinds:
                print(f'item: {raw_value.prettyPrint()}')

我明白了:

item: 6000
item: 520
item: 200
item: 200

我如何才能将这些(可以限制为两个或树)作为变量供以后使用。 谢谢。

不打印项目,而是使用 yield 到 return 函数中的项目。

for oid, raw_value in varBinds:
    yield raw_value

然后你可以像这样使用它们:

for item in walk(host, oid):
    # do something with the item