【发布时间】:2019-02-22 10:03:13
【问题描述】:
是否可以在 python 中直接在三元语句中引发错误?
如:
import numpy as np
y = np.random.rand(200, 5, 5)
y = (y[:, None] if y.ndim == 1
else y if y.ndim == 2
else raise ValueError('`y` must be given as a 1D or 2D array.'))
当然,可以使用简单的 if/elif/else 语句来做到这一点。因此,我特意要求使用“单行”三元语句的解决方案。
只是为了澄清:
我知道三元语句不是为了引发错误,并且根据 PEP8 等,它不是好风格。我只是问是否有可能。
【问题讨论】:
-
我认为阅读这段代码的人会诅咒你,恕我直言。
-
@BearBrown 为什么?恕我直言,三元语句是简化代码的好工具。当然,引发错误可能不是他们打算做的事情,直到现在我才使用它们引发错误,但是这似乎是一种非常......“有趣”......的写作方式一个简短的表达。
-
@Scotty1- 你是对的。此语法从未打算用于引发错误。它适用于
target = normal_value if expected_conditions() else fallback_value。 -
@BearBrown 感谢您指出这一点。我一直使用 pylint 并尝试遵守 PEP8。正如我所说,我知道三元语句并不意味着引发错误。我不想开始讨论它是否是好的风格,因为我知道它不是。因此,我特别询问是否有可能。
标签: python if-statement