【问题标题】:What is the proper way to encapsulate conditionals in Python?在 Python 中封装条件的正确方法是什么?
【发布时间】:2020-04-26 12:25:07
【问题描述】:

我最近观看了一个关于良好编程实践的视频,其中主持人广泛谈论了使用裸条件句(基本上是非封装条件句)的危险。例如,这样的事情应该比在if 语句中明确写入条件更可取。

foo = 3 <= len(bar) < 7 and some_other_condition
if foo:
    do_something
    (...)

有了这些信息,以同样的方式将其应用于 while 循环是合乎逻辑的。

foo = 3 < len(bar) < 7 and some_other_condition
while foo:
    do_something
    update(some_other_condition)
    (...)

这里的问题是条件是在while循环体的外部定义的,即使在循环内显式更改条件时它也不会更新。

另一种选择是定义一个处理条件的函数,并在每次迭代时调用它。但这(至少对我而言)似乎是为了看似干净的代码而不必要的复杂性。有没有什么方法不需要你为每个复杂的条件定义一个内部函数?

def foo(x):
    return 3 < len(x) < 7 and some_other_condition

while foo(bar):
    do_something
    update(some_other_condition)
    (...)

我无法在互联网上找到有关该主题的任何内容。因此,考虑到这一点,我问你,在 Python 中封装条件的正确方法是什么?

【问题讨论】:

  • 您观看了哪个视频?我想到了 Python Zen of Python 中的几句话:“美丽胜于丑陋”和“可读性很重要”。我认为这些都不适用于您的建议
  • 所谓的“危险”是什么?

标签: python conditional-statements


【解决方案1】:

完全不清楚这种技术是否更可取,更不用说有用或可取了。如果不出意外,你就是把一次打错的机会变成了两次。

随便写

while 3 < len(x) < y and some_other_condition:
    ...

【讨论】:

  • 此外,管道中的某些功能(如临时变量)将使真正可怕的条件更容易处理。
猜你喜欢
  • 2022-02-09
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 2013-06-27
  • 2023-04-06
  • 2020-11-22
相关资源
最近更新 更多