【问题标题】:Best practices on python conditionals [closed]python条件的最佳实践[关闭]
【发布时间】:2021-06-05 16:01:43
【问题描述】:

当谈到条件的最佳实践时,推荐以下哪个示例?

def sum(arg1,arg2):
   if arg1>3:
     return
   else:
     return arg1+agr2

def sum(arg1,arg2):
   if arg1<3:
     return arg1+agr2
   else:
     return

提前致谢!

【问题讨论】:

  • 我会使用第二个,但没有不必要的 else 子句。如果您没有明确的 return 语句,则您的函数在到达函数末尾时会隐式返回 None
  • else 在第一个中也不是必需的。如果你没有从if返回,你只会执行if之后的下一条语句,可以是return arg1 + arg2
  • 最后,我会考虑在arg1 &gt; 3 时引发异常是否有意义,而不是让调用者记得检查None 的返回值。
  • 虽然,如果你关注 PEP8,return 应该是 return None,并且应该包含:“如果任何 return 语句返回一个表达式,任何没有返回值的 return 语句都应该显式将此声明为 return None,并且应在函数末尾出现显式返回语句(如果可访问):"。所以这取决于你所遵循的风格指南。
  • 另外,请注意这两个示例在功能上并不相同。如果arg1 == 3,第一个将返回arg1+arg2,而第二个将返回None。 (我假设agr2 是一个错字。)

标签: python if-statement pep


【解决方案1】:

考虑使用三元表达式:

def sum(arg1, arg2):
    return arg1 + arg2 if arg1 < 3 else None

作为附录,如果其中一种情况是意外或不受欢迎的,我喜欢关注guard pattern,这涉及在执行正常逻辑之前先检查这些情况。

例如,

def safe_divide(a, b):
    # Check preconditions at top of function definition
    if b == 0:
        return None

    # Checks passed, perform normal logic
    return a / b

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2010-10-06
    • 2011-10-28
    • 2010-09-10
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多