学习Python并且有点卡住了。
我正在尝试将变量设置为等于int(stringToInt)
,或者如果字符串为空则设置为None
。
我尝试variable = int(stringToInt) or None
,但如果字符串为空,则会出错而不是将其设置为无。
你知道怎么回事吗?
答案 0 :(得分:40)
如果你想要一个像你一样尝试过的单行,那就去吧:
variable = int(stringToInt) if stringToInt else None
仅当variable
不为空并且为“数字”时,才会将int(stringToInt)
分配给stringToInt
。例如,如果'mystring'
为ValueError
,则会引发ValueError
。
要避免try:
variable = int(stringToInt)
except ValueError:
variable = None
s,只要你没有制作生成器表达式,请使用try-except:
{{1}}
答案 1 :(得分:10)
使用它产生异常的事实:
try:
variable = int(stringToInt)
except ValueError:
variable = None
这会产生令人愉快的副作用,例如variable
与None
绑定其他常见错误:stringToInt='ZZTop'
。
答案 2 :(得分:10)
我认为这是最明确的方式:
variable = int(stringToInt) if stringToInt.isdigit() else None
答案 3 :(得分:1)
以下是一些选项:
抓住异常并处理它:
try:
variable = int(stringToInt)
except ValueError, e:
variable = None
它并不是那么特别,为此负责:
variable = None
if not stringToInt.isdigit():
variable = int(stringtoInt)
答案 4 :(得分:1)
如果它是有效的,这会将 stringToInt 解析为 int,如果它是 '' 或 None 则返回原始值
variable = stringToInt and int(stringToInt)