python中nonetype指什么_关于python:什么是’NoneType’对象?
当我运行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’对象?相关推荐
- 简述python中面向对象的概念_简述Python中的面向对象编程的概念
面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机 ...
- python中case的用法_用 Python 实现简单的 switch/case 语句
在Python中是没有Switch / Case语句的,很多人认为这种语句不够优雅灵活,在Python中用字典来处理多条件匹配问题字典会更简单高效,对于有一定经验的Python玩家不得不承认,的确如此 ...
- python中读取文件编码_[转载]python中使用文件的读取编码问题
原文链接:https://www.cnblogs.com/qianboping/p/6524420.html 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都 ...
- python中的递归思想_〖Python〗-- 递归、面向对象初识及编程思想
[递归.面向对象初识及编程思想] 一.递归 1.定义: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. (1)递归就是在过程或函数里调用自身: (2)在使用递归策 ...
- python中表示空类型_在python中什么表示空类型
在python中None表示空类型.None表示空值,它是一个特殊的Python对象,None的类型是None Type.None在Python解释器启动时自动创建,解释器退出时销毁. None表示空 ...
- python中对列表排序_在Python中对嵌套列表进行排序和分组
在Python中对嵌套列表进行排序和分组 我具有以下数据结构(列表列表) [ ['4', '21', '1', '14', '2008-10-24 15:42:58'], ['3', '22', '4 ...
- python中可以作为定界符_在Python中,字符串属于不可变有序序列,使用单引号、双引号、三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套。...
在Python中,字符串属于不可变有序序列,使用单引号.双引号.三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套. 下述哪种光谱法是基于发射原理()?A:分光光度法B:荧光光度法C:红外 ...
- python中基本程序结构_关于Python 程序格式框架的描述,正确的是( )
[判断题]元组的元素是可读的,可以对元组进行更新.增加.删除操作. [多选题]哪些选项关于循环结构的描述是正确的( ) [单选题]以下可以终结一个循环的是 . [判断题]对于大量列表的连接,exten ...
- python中nomodulenamed怎么解决_关于 python ImportError: No module named 的问题
今天在 centos 下安装 python setup.py install 时报错:ImportError: No module named sysconfig, 当时急着用,就顺手直接源码编译了一 ...
最新文章
- 【C++】修改const变量的值
- 为什么文件会自动恢复成旧文件? -- windows server 2003
- ( 流水账1)周五--liphi--校服的联想
- ActiveMQ_3Java实现
- 小白也能看懂——使用dev-c++建立工程(多个文件一同编译连接)并运行
- 【RK3399Pro学习笔记】一、Thinker Edge R 安装系统和VNC服务
- python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo
- c++ 访问控制与封装
- 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 1)
- Windows内核结构
- PX4位置估计源码分析
- 服务器上的VGA切换原理,什么是VGA接口 原理及特点是什么
- 数据库分析之概念结构设计
- 苹果笔记本上网很慢怎么回事
- 百度开源深度学习平台Paddle
- maya计算机内存不足请保存,Word突然出现无法保存内存不足怎么办
- 关于案例式C语言上机指导与习题解答中实验4_15题的解答
- 蓝桥云课linux入门2:基本概念及操作
- 反射(三) 笔记
- 用条码标签打印软件批量打印物料标签
热门文章
- python函数的作用域_Python之函数作用域
- 大数据总线(DataHub)
- 漫谈 SLAM 技术(下)
- 读hzk32_最全HZK12,HZK16,HZK24,HZK32,HZK40,HZK48,ASC12, ASC16,ASC24, ASC32, ASC48字库+读取代码...
- 每天坚持做一件有意义的事
- Redis集群与主从配置
- 熟悉linux操作系统的使用实验报告,Linux系统的熟悉与使用操作系统实验报告
- OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年
- Excel中创建图表的快捷方式哪些
- 三万长文50+趣图带你领悟web编程的内功心法:一文带你深入解读HTTP的发展史