gpt4 book ai didi

python - 为什么 Python 中没有显式的空性检查(例如 `is Empty` )

转载 作者:IT老高 更新时间:2023-10-28 20:32:04 25 4
gpt4 key购买 nike

The Zen of Python说“显式优于隐式”。然而,检查空虚的“pythonic”方法是使用隐式 bool 值:

if not some_sequence:
some_sequence.fill_sequence()

如果 some_sequence 是一个空序列,但如果它是 None0 也是如此。

与理论上的显式空性检查比较:

if some_sequence is Empty:
some_sequence.fill_sequence()

由于选择了一些不利的变量名,检查空的隐式 bool 值变得更加困惑:

if saved:
mess_up()

比较:

if saved is not Empty:
mess_up()

另见:“Python: What is the best way to check if a list is empty?”。我觉得讽刺的是,投票最多的答案声称implicit 是pythonic。

那么没有明确的空性检查是否有更高的原因,例如 Python 中的 is Empty

最佳答案

if foo:if not foo: 中的多态性并不违反“隐式 vs 显式”:它显式委托(delegate)给被检查对象的任务是知道它是真还是假。这意味着什么(以及如何最好地检查它)显然确实并且必须取决于对象的类型,因此样式指南要求委托(delegate) - 让应用程序级代码傲慢地断言它比对象更了解是愚蠢的高度。

此外,X is What 总是,总是意味着 X 是 完全相同的对象 与 What。为 EmptyWhatever 的任何其他特定值创建一个完全独特的异常(exception)将是荒谬的——很难想象一种更非 Pythonic 的方法。而且“完全相同的对象”显然是可传递的——所以你再也不能有不同的空列表、空集、空字典……恭喜,你刚刚设计了一种完全不可用和无用的语言,其中每个空容器疯狂地“折叠”成一个空容器对象(想象一下当有人试图改变一个空容器时的乐趣......?!)。

关于python - 为什么 Python 中没有显式的空性检查(例如 `is Empty` ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3488470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com