当我运行python脚本时,我得到了这个错误:

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

我很确定"str"是指字符串,但我不知道"nonetype"对象是什么。我的脚本停在第二行,我知道第一行有效,因为来自该行的命令如我所期望的那样在我的ASA中。起初我认为这可能是因为我在send_命令中使用变量和用户输入。

"caps"中的所有内容都是变量,"小写"中的所有内容都是来自"parser.add"选项的输入。

我用的是pexpect和optparse

send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)

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

我们需要看到更多的代码,而input-noneteoe意味着其中一个变量尚未设置。

NoneType是单个值None的类型。其中一个值不是字符串。

快速&脏:将每个术语连接到str()str(snmpsrvuscrmd)+str(snmpuser)+

@彼得曼,这是一个可怕的想法——问题将进一步显现出来(也许更糟)。最好弄清楚为什么其中一个变量一开始就没有了。

考虑到关于NoneType的问题被提出、投票和保存的频率有多高,我认为python核心开发人员应该从错误消息中删除所有对NoneType的引用。它除了迷惑人们之外,没有其他目的。None不可重新分配(None=1不可能),是单例(NoneType的唯一实例),是关键字(因此在任何地方都可用,NoneType不是)。所以我不知道为什么这些错误不能仅仅把它称为None。这并不是说任何人可能会被"str"和"none"之间的连接和"wonder wait"混淆,这又是什么"none"?

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

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

send_command(child, SNMPGROUPCMD + group + V3PRIVCMD)

group或SNMPGROUPCMD或V3PRIVCMD中的一个值为None。

谢谢!!如果正确,出于某种原因,我的一个用户输入选项未被采用。我把它作为一个"名字"和一个选项加起来,很有效。现在我只需要找出为什么这不是一个正确的选择,所有其他的选择都工作得很好。

"not set"有点模糊……如果一个变量没有定义,并且您试图用它执行一些操作,那么您应该得到一个NameError。它也可以设置,但等于None(设置为Nothing"="Not Set"?)然后你可能会得到一些TypeError。

基本上(这里的C/Java用户)没有空

NoneType只是None单体的类型:

>>> type(None)

从上面的后一个链接:

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,因此出现了错误。

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

none是python的"null",NoneType是它的类型。

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

>>> bar ="something"

>>> foo = None

>>> print foo + bar

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

为了防御性编程,在使用前应该检查对象是否为空。

if obj is None:

if obj is not None:

注意,相等运算符==在这里不起作用。

"is"只能在需要时使用。最好的防御编程是测试,很多测试。

防御编程是最邪恶的事情之一。如果你发现这样的错误,这意味着你做了一个错误的编程。像"使用前检查空值"这样的东西只隐藏了一些严重的错误。您应该让异常被抛出。而且不要让程序员抛出一些定制的异常,这真的很麻烦。让自然错误被抛出。实际上,防御性编程是您应该使用另一种语言的症状。

在python中,为了表示没有值,可以使用None值types.NoneType.None。

对于python 3,请参见:stackoverflow.com/questions/21706609/…

在错误消息中,python解释器通过显示两个对象的值(在本例中是一个字符串和None)而不是告诉您不能连接两个对象,而是通过显示试图连接的对象的类型来告诉您这一点。每个字符串的类型是str,而单个None实例的类型称为NoneType。

您通常不需要关心NoneType,但在本例中,必须知道type(None) == NoneType。

我有一个非常类似的问题,试图检测对象是否是非类型的,你的肯定对我不起作用:>>> type(key) >>> type(key) == NoneType Traceback (most recent call last): File"", line 1, in NameError: name 'NoneType' is not defined。

@rubick NoneType在任何地方都没有定义(我知道)。如果要检查值是否为None,只需使用key is None(请参阅stackoverflow.com/questions/23086383/…)。否则,您可以使用type(key) == type(None)达到同样的效果。

发生错误的原因如下:>>> None +"hello world"

Traceback (most recent call last):

File"", line 1, in TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'>>

在其他语言中,python的none对象大致相当于null、nil等。

none type是none的类型。

请参阅以下文档:https://docs.python.org/2/library/types.html types.nonetype

其中一个变量没有给定任何值,因此它是非类型的。你得研究一下为什么会这样,这可能是你的一个简单的逻辑错误。

python中nonetype指什么_关于python:什么是’NoneType’对象?相关推荐

  1. 简述python中面向对象的概念_简述Python中的面向对象编程的概念

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...

  2. python中case的用法_用 Python 实现简单的 switch/case 语句

    在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于有一定经验的Python玩家不得不承认,的确如此 ...

  3. python中读取文件编码_[转载]python中使用文件的读取编码问题

    原文链接:https://www.cnblogs.com/qianboping/p/6524420.html 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都 ...

  4. python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想

    [递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...

  5. python中表示空类型_在python中什么表示空类型

    在python中None表示空类型.None表示空值,它是一个特殊的Python对象,None的类型是None Type.None在Python解释器启动时自动创建,解释器退出时销毁. None表示空 ...

  6. python中对列表排序_在Python中对嵌套列表进行排序和分组

    在Python中对嵌套列表进行排序和分组 我具有以下数据结构(列表列表) [ ['4', '21', '1', '14', '2008-10-24 15:42:58'], ['3', '22', '4 ...

  7. python中可以作为定界符_在Python中,字符串属于不可变有序序列,使用单引号、双引号、三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套。...

    在Python中,字符串属于不可变有序序列,使用单引号.双引号.三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套. 下述哪种光谱法是基于发射原理()?A:分光光度法B:荧光光度法C:红外 ...

  8. python中基本程序结构_关于Python 程序格式框架的描述,正确的是( )

    [判断题]元组的元素是可读的,可以对元组进行更新.增加.删除操作. [多选题]哪些选项关于循环结构的描述是正确的( ) [单选题]以下可以终结一个循环的是 . [判断题]对于大量列表的连接,exten ...

  9. python中nomodulenamed怎么解决_关于 python ImportError: No module named 的问题

    今天在 centos 下安装 python setup.py install 时报错:ImportError: No module named sysconfig, 当时急着用,就顺手直接源码编译了一 ...

最新文章

  1. 【C++】修改const变量的值
  2. 为什么文件会自动恢复成旧文件? -- windows server 2003
  3. ( 流水账1)周五--liphi--校服的联想
  4. ActiveMQ_3Java实现
  5. 小白也能看懂——使用dev-c++建立工程(多个文件一同编译连接)并运行
  6. 【RK3399Pro学习笔记】一、Thinker Edge R 安装系统和VNC服务
  7. python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo
  8. c++ 访问控制与封装
  9. 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 1)
  10. Windows内核结构
  11. PX4位置估计源码分析
  12. 服务器上的VGA切换原理,什么是VGA接口 原理及特点是什么
  13. 数据库分析之概念结构设计
  14. 苹果笔记本上网很慢怎么回事
  15. 百度开源深度学习平台Paddle
  16. maya计算机内存不足请保存,Word突然出现无法保存内存不足怎么办
  17. 关于案例式C语言上机指导与习题解答中实验4_15题的解答
  18. 蓝桥云课linux入门2:基本概念及操作
  19. 反射(三) 笔记
  20. 用条码标签打印软件批量打印物料标签

热门文章

  1. python函数的作用域_Python之函数作用域
  2. 大数据总线(DataHub)
  3. 漫谈 SLAM 技术(下)
  4. 读hzk32_最全HZK12,HZK16,HZK24,HZK32,HZK40,HZK48,ASC12, ASC16,ASC24, ASC32, ASC48字库+读取代码...
  5. 每天坚持做一件有意义的事
  6. Redis集群与主从配置
  7. 熟悉linux操作系统的使用实验报告,Linux系统的熟悉与使用操作系统实验报告
  8. OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年
  9. Excel中创建图表的快捷方式哪些
  10. 三万长文50+趣图带你领悟web编程的内功心法:一文带你深入解读HTTP的发展史