如果另一个函数不返回错误,If语句如何返回True?

时间:2019-07-16 09:22:25

标签: python try-catch

我正在设置一个脚本,我需要创建一个if语句,如果另一个函数没有返回错误,则if语句为True。

目前,我已经尝试过:

def function1():
   try:
     doSomething()
     return A (not a bool here)
   except:
     return 'Error'
     raise
if function1() != 'Error':
   print(True)

我正在寻找一种避免在return 'Error'中使用function1的方法。

从字面上看,我正在尝试获得:

if 'there is no error' in function1():
   print(True)

5 个答案:

答案 0 :(得分:1)

只需在函数中返回True或False:

SchedulerLike

答案 1 :(得分:1)

关于它的方法并不太多。指示错误的pythonic方式是异常,因此应该是:

def function1():
    doSomething()
    return A

try:
    function1()
except Exception:
    print('An error occurred')
else:
    print(True)

如果您出于某种原因不喜欢异常,唯一的选择是将成功或失败归因于返回值,通常您会返回任何 truthy 成功值, falsey 失败值:

def function1():
    try:
        doSomething()
        return A
    except:
        return False

if function1():
    print(True)

只要A是任何东西– truthy ,例如任何对象,都可以。

答案 2 :(得分:0)

仅返回一个元组而不是单个值,其中第一个元素是错误,如果成功则返回None:

def function1():
  try:
    result = doSomething()
    return None, result
  except:
    return 'Error', None

err, result = function1()
if not err:
  print('ok')
  doNext(result)
else:
  print(err)

答案 3 :(得分:-1)

仅当条件为True时,代码中的if语句才执行,这意味着当function1不等于'Error'时,从字面上看,function1返回'Error'就是为什么它不输出True。

答案 4 :(得分:-1)

if 'there is no error' in function1():表示function1()返回true。因此,如果发生错误,则应返回false。所以我会做:

def function1():
   try:
     doSomething()
     return True
   except:
     return False

由于您的A不是布尔值,所以我会像在Golang中一样:返回2个值

def function1():
  try:
    doSomething()
      return A, False
  except:
    return None, True


A, error = function1()
if not error:
  # this mean A is not None

另一种解决方案:

def function1():
    try:
        doSomething()
        return A
    except:
        return None

if function1():
    # No error