什么是'NoneType'对象?

133

运行我的Python脚本时,我遇到了这个错误:

TypeError: cannot concatenate 'str' and 'NoneType' objects
我很确定'str'代表字符串,但我不知道'NoneType'对象是什么。我的脚本在第二行失败了,我知道第一行有效,因为我预计的命令都在我的 asa 中。起初我认为这可能是因为我正在使用变量和用户输入来发送命令。
所有大写字母都是变量,所有小写字母都是由 'parser.add_option' 选项输入的内容。
我正在使用pexpect和optparse。
send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)
send_command(child, SNMPSRVUSRCMD + snmpuser + group + V3AUTHCMD + snmphmac + snmpauth + PRIVCMD + snmpencrypt + snmppriv)

2
我们需要看更多的代码和输入 - NoneType 表示其中一个变量尚未设置。 - mmmmmm
5
NoneType 是表示单例值 None 的类型。你的其中一个值不是字符串。 - Martijn Pieters
快速而不精确的方法:将要连接的每个术语放入 str() 中 str(SNMPSRVUSRCMD) + str(snmpuser) + ... - PeterMmm
4
@PeterMmm 那是个糟糕的想法——问题只会在以后更严重地显现出来。最好先弄清楚为什么其中一个变量一开始就是None。 - arshajii
13个回答

0

0

其中一个变量没有被赋值,因此它是NoneType。你需要查看为什么会这样,很可能是你的逻辑错误导致的。


0

NoneType是None的类型。基本上,NoneType会出现多种原因,

  • 首先,当您在函数内部设置条件(例如),如果未满足该条件,则返回None。 例如: def dummy(x, y): if x > y: return x res = dummy(10, 20) print(res) # 如果条件不符合,则会返回None。

为了解决这个问题,请使用0返回函数,即返回0,如果条件不满足,则函数将以0结束而不是None。

  • 其次,当您显式地将变量分配给一个不返回任何值但返回None的内置方法时。 my_list = [1,2,3] my_list = my_list.sort() print(my_list) # sort()改变数据结构但不返回任何内容,如果打印它,则返回None。 或者 lis = None re = lis.something()) print(re) # 返回属性错误NonType对象没有属性something

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接