Python 如何高效地编写多个try/except

Python 如何高效地编写多个try/except,python,Python,我经常想尝试将值转换为int,如果无法转换,请将它们设置为某个默认值。例如: try: a = int(a) except: a = "Blank" try: b = int(b) except: b = "Blank" try: c = int(c) except: c = "Blank" 这可以用Python更有效地编写,而不必写下每一次尝试和例外吗?我只需要使用一个函数: def int_with_default(i): try:

我经常想尝试将值转换为int,如果无法转换,请将它们设置为某个默认值。例如:

try:
    a = int(a)
except:
    a = "Blank"
try:
    b = int(b)
except:
    b = "Blank"
try:
    c = int(c)
except:
    c = "Blank"

这可以用Python更有效地编写,而不必写下每一次尝试和例外吗?

我只需要使用一个函数:

def int_with_default(i):
    try:
        return int(i)
    except ValueError:
        return "Blank"

a = int_with_default(a)
b = int_with_default(b)
c = int_with_default(c)

如果有必要,您可以添加第二个参数,告诉您如果不想每次都使用“Blank”,默认值应该是多少。

我只需要使用一个函数:

def int_with_default(i):
    try:
        return int(i)
    except ValueError:
        return "Blank"

a = int_with_default(a)
b = int_with_default(b)
c = int_with_default(c)

如有必要,您可以添加第二个参数,告诉您如果不想每次都使用“Blank”,默认值应该是多少。

为什么要使用downvote?为什么不使用一个函数来执行此操作,这样您就不需要重复自己的操作了?您甚至可以使用此函数获取多个值。我将把三个转换放在一个
try except
子句中,并使用类似
except ValueError:
的内容。对每个异常使用
,除了
,这不是一个好习惯。@Alex实际上是这样的。“最佳实践”是在每个
try
中使用最少的行数。如果它们都在同一个
try
,您如何知道其中哪一个失败了?同意DeepSpace-同时您希望避免捕获任何您无法100%确定要捕获的错误,因此,最小化try/except块中的代码行数可以确保您只捕获最小行数上的错误。为什么要进行向下投票?为什么不使用一个函数来执行此操作,这样您就不需要重复自己的操作?您甚至可以使用此函数获取多个值。我将把三个转换放在一个
try except
子句中,并使用类似
except ValueError:
的内容。对每个异常使用
,除了
,这不是一个好习惯。@Alex实际上是这样的。“最佳实践”是在每个
try
中使用最少的行数。如果它们都在同一个
try
,您如何知道其中哪一个失败了?请同意DeepSpace-您还希望避免捕获任何您不100%确定要捕获的错误,因此最小化try/except块中的代码行数可确保只捕获最小行数上的错误。