本文收集整理关于如何让python不返回none的相关议题,使用内容导航快速到达。
内容导航:
两次都是你下面的结果,只是python的列表可以[:None]其实就是[:]
当使用None时:
areaCode
=
None
for
val
in
valList:
areaCode
+=
','
此时就会报错:TypeError:
unsupported
operand
type(s)
for
+=:
'NoneType'
and
'unicode'
NnoeType不允许和unicode对象进行+=连接
使用:
areaCode
=
''
for
val
in
valList:
areaCode
+=
','
此时正常。
两者区别:
None是一个空的对象,代表什么都没有。
而'',是一个字符串对象,代表一个空的字符串。
只有字符串才能和字符串相互连接。
原本这是一个递归写得计算阶乘的程序,现在被我改了一下如下
>>> def factorial(n):
if n == 1:
return 1
else:
factorial(n-1)
结果当我
>>> print(factorial(7))
None
之前我还以为返回值应该是1的,可没想到竟然是none,谁能解释下,O(∩_∩)O谢谢
return factorial(n-1) 我是知道的啦,原以为执行else:
factorial(n-1)
后便又会调用factorial(n-1),然后继续递归下去,直到返回值为1停止,可返回值最后竟然是none,我很纳闷啊!!
很正常呀,你的else分支没有return语句,那么缺省的返回值就是None,也就是除了factorial(1)返回1之外,其他情况就是None,所以你应该写成return factorial(n-1)
以前有过类似的问题 可以参考下:
http://blog.csdn.net/hhtnan/article/details/77164198
因为 n > len(array) 的情况你没有考虑到
代码中也没有没有对这种情况进行处理 所以程序直接走到最后 没有进行任何返回 就是None 了
没给返回值,函数总是返回None 如果使用return 语句返回了值,就返回return 语句中的值
def My_abs(x):
if not isinstance(x,(int,float)):
raise TypeError('Bad Type')
else:
if x>=0:
return x
else:
return -x
你定义的方法,第二个if缩进有问题。
这是因为,#如果直接调用,def里面就加print,如果调用的时候用print,则用return返回值,如下:def name2number(name):
if name == 'rock':
return 0
elif name == 'paper':
return 1
elif name == 'scissor':
return 2
else:
print('wrong name')
print(name2number("rock"))
扩展资料:
在python语言中,对于none需要记住以下几点:
1、None是一个特殊的常量。
2、None和False不同。
3、None不是0。
4、None不是空字符串。
5、None和任何其他的数据类型比较永远返回False。
6、None有自己的数据类型NoneType。你可以将None复制给任何变量,但是你不能创建其他NoneType对象。
7、python中的None就相较于Java中的Null。python中就没有所谓的NULL。