Python 当函数只有1条if语句时,函数是否需要else/elif?

Python 当函数只有1条if语句时,函数是否需要else/elif?,python,Python,这两个函数在调用时似乎返回相同的值。但是,我想知道数字2在某些情况下是否会引起错误?这样做是不好的做法吗 第一名: def not_sum_to_ten(num1, num2): if num1 + num2 != 10: return True else: return False def not_sum_to_ten(num1, num2): if num1 + num2 != 10: return True return False 第二名: d

这两个函数在调用时似乎返回相同的值。但是,我想知道数字2在某些情况下是否会引起错误?这样做是不好的做法吗

第一名:

def not_sum_to_ten(num1, num2):
  if num1 + num2 != 10:
    return True
  else:
    return False
def not_sum_to_ten(num1, num2):
  if num1 + num2 != 10:
    return True
  return False
第二名:

def not_sum_to_ten(num1, num2):
  if num1 + num2 != 10:
    return True
  else:
    return False
def not_sum_to_ten(num1, num2):
  if num1 + num2 != 10:
    return True
  return False

谢谢分享你的知识

您也不需要
if
语句,只需返回
的结果即可=操作员:

def not_sum_to_ten(num1, num2):
    return num1 + num2 != 10
关于原来的问题,这两个功能是等价的。但是,第二种形式更简洁,效率略高,因为它不需要解释器加载函数的默认返回值,即
None
。您可以使用并检查字节码来反汇编函数对象:

  2           0 LOAD_FAST                0 (num1)
              2 LOAD_FAST                1 (num2)
              4 BINARY_ADD
              6 LOAD_CONST               1 (10)
              8 COMPARE_OP               3 (!=)
             10 POP_JUMP_IF_FALSE       16

  3          12 LOAD_CONST               2 (True)
             14 RETURN_VALUE

  5     >>   16 LOAD_CONST               3 (False)
             18 RETURN_VALUE
             20 LOAD_CONST               0 (None)
             22 RETURN_VALUE
vs


您也不需要
if
语句,只需返回
的结果即可=操作员:

def not_sum_to_ten(num1, num2):
    return num1 + num2 != 10
关于原来的问题,这两个功能是等价的。但是,第二种形式更简洁,效率略高,因为它不需要解释器加载函数的默认返回值,即
None
。您可以使用并检查字节码来反汇编函数对象:

  2           0 LOAD_FAST                0 (num1)
              2 LOAD_FAST                1 (num2)
              4 BINARY_ADD
              6 LOAD_CONST               1 (10)
              8 COMPARE_OP               3 (!=)
             10 POP_JUMP_IF_FALSE       16

  3          12 LOAD_CONST               2 (True)
             14 RETURN_VALUE

  5     >>   16 LOAD_CONST               3 (False)
             18 RETURN_VALUE
             20 LOAD_CONST               0 (None)
             22 RETURN_VALUE
vs


这两个函数的作用完全相同。实际上,如果不需要,最好不要使用elif。

这两个函数的作用完全相同。实际上,如果不需要使用elif,那么不使用它是一种很好的做法。

第二种方法实际上更具可读性,而且(可以说)更具pythonic。当编写可以很早做出决策的函数时,这种方法非常有用,如:

def get_data(user, token):
    if not verify(user, token):
        return AuthException()
    // Do actual fetching

这使得添加另一个
else
非常容易理解。关于早期回报。

第二种方法实际上更具可读性,而且(可以说)更具python风格。当编写可以很早做出决策的函数时,这种方法非常有用,如:

def get_data(user, token):
    if not verify(user, token):
        return AuthException()
    // Do actual fetching

这使得添加另一个
else
非常容易理解。关于早期返回。

两者都是相同的,不会产生错误,我认为数字2更接近最佳做法是返回结果,如@eugene_yarmash所说:)在这样一个简单的情况下,这很简单,但在更复杂的函数中,在我看来,最好有一个“else”对应一个“if”,因为很容易忘记涵盖所有案例。特别是,在关键的应用程序开发中,您甚至可以找到“else”,里面只有一条注释,只是为了满足代码检查工具的要求@谢谢,我觉得这很有道理。我想知道,出于这个原因,使用else语句只是为了养成习惯是否也更好。这是一个意见问题,真的(因此从技术上讲,这是一个离题的问题)。我更喜欢数字2的样式,但我会更改它,以便您在比较中使用
=
(并且明显地切换
return
语句)。我只是觉得检查事物是否相等比检查它们是否不相等更自然。两者都是相同的,不会产生错误,我认为数字2更接近。最佳做法是返回结果,如@eugene_yarmash所说:)在这样一个简单的情况下,这很简单,但在我看来,在更复杂的函数中,最好将“else”对应于“if”,因为很容易忘记涵盖所有情况。特别是,在关键的应用程序开发中,您甚至可以找到“else”,里面只有一条注释,只是为了满足代码检查工具的要求@谢谢,我觉得这很有道理。我想知道,出于这个原因,使用else语句只是为了养成习惯是否也更好。这是一个意见问题,真的(因此从技术上讲,这是一个离题的问题)。我更喜欢数字2的样式,但我会更改它,以便您在比较中使用
=
(并且明显地切换
return
语句)。我只是觉得检查事物是否相等比不相等更自然。酷,这些数字是什么意思?我几天前才开始学习Python。来自Ruby使得大多数概念都很容易理解。酷,这些数字是什么意思?我几天前才开始学习Python。来自Ruby使得掌握大多数概念变得非常容易。