什么是“NoneType”对象?

2024-03-29 09:10:54 发布

您现在位置:Python中文网/ 问答频道 /正文

运行python脚本时出现以下错误:

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

我很确定str的意思是string,但我不知道NoneType对象是什么。我的脚本在第二行很糟糕,我知道第一行是有效的,因为那行的命令在我的asa中,正如我所期望的那样。起初我认为这可能是因为我在send_命令中使用变量和用户输入。

“CAPS”中的所有内容都是变量,“lower case”中的所有内容都是来自“parser.add_option”选项的输入。

我在用pexpect和optparse

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

Tags: and命令脚本sendchild内容objects错误
3条回答

^{}只是^{}单例的类型:

>>> type(None)
<type 'NoneType'>

从上面的后一个链接:

None

The sole value of the type NoneType. None is frequently used to represent the absence of a value, as when default arguments are not passed to a function. Assignments to None are illegal and raise a SyntaxError.

在您的例子中,您试图连接的项之一似乎是None,因此出现错误。

NoneTypeNone对象的类型,该对象指示无值None是“不返回任何内容”的函数的返回值。对于搜索某些内容并且可能找到也可能找不到的函数,它也是一个常见的默认返回值;例如,当regex不匹配时,它由re.search返回,或者当键在dict中没有条目时,它由dict.get返回。不能将None添加到字符串或其他对象。

变量之一是None,而不是字符串。可能您忘记了在某个函数中return,或者用户没有提供命令行选项,optparse为该选项的值提供了None。当您尝试将None添加到字符串时,会出现以下异常:

send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)

其中一个groupSNMPGROUPCMDV3PRIVCMD的值是None

这意味着您试图将字符串与None连接起来。

None是Python的“null”,而NoneType是它的类型。

此代码将引发相同类型的错误:

>>> bar = "something"
>>> foo = None
>>> print foo + bar
TypeError: cannot concatenate 'str' and 'NoneType' objects

相关问题 更多 >