在python中,是不赞成在if语句中使用额外的条件来避免错误,还是应该与if语句分开执行?
示例:
我想确保d,也就是一个空字符串或数字字符串,不为空且不小于1。如果d是空字符串,则不能将其转换为浮点。在尝试转换为float之前,该语句的计算结果为false,因此不会出现错误。这种做法不好吗?你知道吗
def main():
d = "2.25"
check_d(d)
d = "0"
check_d(d)
d = ""
check_d(d)
def check_d(d):
if d and float(d) >= 1:
return True
print('d must be defined with value 1 or greater')
return False
def check_d_old(d):
try:
if float(d) >= 1:
return True
except:
pass
print('d must be defined with value 1 or greater')
return False
第一个很好,假设
d
总是符合您的标准,但是第二个示例更健壮。你知道吗例如,当
d = "a"
条件if d and float(d) >= 1:
将提升ValueError
时,try: except
将捕获它并正常工作。你知道吗因此,如果“d将是空白字符串或数字字符串”的条件是绝对的,那么第一个条件就可以了,但是如果
d
可能有其他值,那么您可能需要使用第二个条件。你知道吗如果将
if d
部分包含在try中,则不需要它。像这样的方法是可行的,如果它不是一个数字,你会得到一个ValueError
,如果它是一个数字,但小于1,你会得到一个ValueError
。你知道吗使用额外的条件是可以的,但是如果你能跳过一些不必要的条件,那么总体来说它会运行得更快。另外,不要只使用
except
,要找出要查找的错误类型。你知道吗相关问题 更多 >
编程相关推荐