以下代码运行良好。
a = 2.0
b = int(a)
并且CCD_ 1是CCD_。
但以下内容不起作用:
a = None
b = int(a)
我得到以下错误:
TypeError:int((参数必须是字符串、类似字节的对象或实数,而不是"NoneType">
这是有效的:
a = None
if a != None:
b = int(a)
else:
b = 0
但是代码太多了,因为我的用例中有几个这样的变量可以是None。
我想要什么:
- b=a,如果a不是None
- b=0,如果a为无
有没有一种优雅的方法可以通过内置函数或我不知道存在的东西来实现这一点。。。?
如果需要多次尝试,可以用try:...except:...
块制作一个非常小的函数。
def try_int(v):
try:
return int(v)
except TypeError:
return 0
a = 2
b = try_int(a) # should return 2
c = None
d = try_int(c) # should return 0
这个解决方案坚持"请求原谅,而不是许可"的原则,并且不要通过拥有一堆单独的try:...except:...
块而只是一个来重复自己。
就这么简单:b = int(a or 0)