【发布时间】: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