关于if条件的Python约定

2024-05-08 03:47:54 发布

您现在位置:Python中文网/ 问答频道 /正文

在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

Tags: 字符串truereturnifvaluedefcheck错误
2条回答

第一个很好,假设d总是符合您的标准,但是第二个示例更健壮。你知道吗

例如,当d = "a"条件if d and float(d) >= 1:将提升ValueError时,try: except将捕获它并正常工作。你知道吗

因此,如果“d将是空白字符串或数字字符串”的条件是绝对的,那么第一个条件就可以了,但是如果d可能有其他值,那么您可能需要使用第二个条件。你知道吗

如果将if d部分包含在try中,则不需要它。像这样的方法是可行的,如果它不是一个数字,你会得到一个ValueError,如果它是一个数字,但小于1,你会得到一个ValueError。你知道吗

def check_d(d):
    try:
        if float(d) >= 1:
            return 0
        else:
            raise ValueError()
    except ValueError:
        print('d must be defined with value 1 or greater')
        return 1

使用额外的条件是可以的,但是如果你能跳过一些不必要的条件,那么总体来说它会运行得更快。另外,不要只使用except,要找出要查找的错误类型。你知道吗

相关问题 更多 >