7

我想知道是否有一种方法可以编写下面的模块代码,而不必在整个模块代码中添加另一个缩进级别。

# module code
if not condition:
    # rest of the module code (big)

我正在寻找这样的东西:

# module code
if condition:
    # here I need something like a `return`
# rest of the module code (big)

注意,我不想抛出异常,导入应该正常通过。

4

3 回答 3

5

我不知道有什么解决方案,但我想你可以将所有代码放在一个内部模块中,如果不满足条件则导入它。

于 2011-10-13T14:33:14.167 回答
2

我知道没有办法做到这一点。我能想象的唯一可行的方法是return,但这需要在函数内部。

于 2011-10-13T13:21:14.203 回答
-1

如果不知道您的更高级别的目标是什么,这很难说。(例如,条件是什么?为什么重要?你确定你这里没有 XY 问题吗?你不能告诉我们你的总体目标是什么吗?)在不知道的情况下也很难说如何调用模块。(作为命令行的脚本?通过被另一个模块导入?)了解(a)为什么你试图避免缩进(二战结束,我们不需要分配空间)或者,更友好地说,Python 是一种使用缩进作为句法特征的语言,所以说“我不能使用这个句法特征”让很多人觉得这是一个奇怪的约束。这就像放弃 if-then测试:理论上你可能能够解决这个限制,

事实上,你真正做的只是问“在给定条件 A、B 和 C 的情况下,我该怎么做 X?” 问题,没有说明您为什么要执行 X,或者为什么存在条件 A、B 和 C,或者您是否 100% 确定它们存在并且无法解决。

如果您真正想说的是“我不想在编写函数时按 {TAB} 40 次”,那么真正的问题是您需要一个更好的文本编辑器。如果你真正想说的是“我碰巧发现缩进在美学上令人不快”,那么你应该考虑(a)论点的另一面是什么;也就是说,为什么人们 Python 使用缩进作为语法是有用的;(b) 在这方面你自己的审美偏好是否比你在 (a) 中提出的原因更重要;(c) 鉴于这些情况,Python 是否是您个人用来完成您自己的更大规模目标的正确工具。(不喜欢缩进作为句法特征是可以的;但这对 Python 来说是如此基础,以至于在哲学上反对它到一定程度将其排除在外,这强烈表明 Python 可能不是你实现编程目标的理想语言。)如果你真正想说的是如果将需要在两组不同环境下运行的代码分解为两个模块,您会从中受益,那么重构将使您受益。如果您的意思是您的意大利面条式代码最终完全无法重构,那么在您尝试中止模块导入之前,这确实是第一个要解决的问题。真正要说的是,将需要在两组不同环境下运行的代码分解为两个模块,您会从中受益,那么重构将使您受益。如果您的意思是您的意大利面条式代码最终完全无法重构,那么在您尝试中止模块导入之前,这确实是第一个要解决的问题。真正要说的是,将需要在两组不同环境下运行的代码分解为两个模块,您会从中受益,那么重构将使您受益。如果您的意思是您的意大利面条式代码最终完全无法重构,那么在您尝试中止模块导入之前,这确实是第一个要解决的问题。

于 2016-07-25T08:54:03.090 回答