什么是“NoneType”对象?

新手上路,请多包涵

运行 python 脚本时出现此错误:

 TypeError: cannot concatenate 'str' and 'NoneType' objects

我很确定“str”是指字符串,但我不知道“NoneType”对象是什么。我的脚本在第二行出现问题,我知道第一行有效,因为该行的命令如我所料在我的 asa 中。起初我认为这可能是因为我在 send_command 中使用了变量和用户输入。

“CAPS”中的所有内容都是变量,“小写”中的所有内容都是从“parser.add_option”选项输入的。

我正在使用 pexpect 和 optparse

 send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)
send_command(child, SNMPSRVUSRCMD + snmpuser + group + V3AUTHCMD + snmphmac + snmpauth + PRIVCMD + snmpencrypt + snmppriv)

原文由 insecure-IT 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 931
2 个回答

NoneTypeNone 对象的类型,它是一个表示 没有值 的对象。 None 是“不返回任何东西”的函数的返回值。它也是搜索某些东西但可能找到也可能找不到的函数的常见默认返回值;例如,它由 re.search 返回,当正则表达式不匹配时,或者 dict.get 当键在字典中没有条目时返回。您不能将 None 添加到字符串或其他对象。

您的变量之一是 None ,而不是字符串。也许你忘记了 return 在你的一个函数中,或者用户没有提供命令行选项和 optparse 给了你 None -s-6价值。当您尝试将 None 添加到字符串时,您会得到该异常:

 send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)

其中之一 groupSNMPGROUPCMDV3PRIVCMDNone as 其值

原文由 Burhan Khalid 发布,翻译遵循 CC BY-SA 3.0 许可协议

出于防御性编程的考虑,应在使用前检查对象是否为空。

 if obj is None:

要么

if obj is not None:

原文由 Gürol Canbek 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题