是否有可能以返回的方式结束python模块导入?

时间:2011-10-13 13:08:00

标签: python python-module

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

# 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)

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果不知道你的更高级别的目标是什么,那就太难说了。 (例如,条件是什么?为什么重要?你是否确定你在这里没有XY问题?你能告诉我们你的总体目标是什么吗?)它'如果不知道如何调用该模块,也很难说。 (作为命令行中的脚本?通过另一个模块导入?)并且很有必要知道(a)为什么你要避免缩进(WWII结束了,我们不会这样做)需要更多地理解空间;或者,更为温和的是,Python是一种使用缩进作为SYNTACTIC FEATURE的语言,所以说"我不能使用这种语法特征"罢工很多人一个奇怪的约束。它就像放弃if-then测试一样:理论上你可以解决这个约束,有时可能,但你为什么要用双手绑在背后进入拳击场呢?) ,(b)为什么你不能抛出异常(不,真的:你完全确定你绝对不能完全抛出任何异常吗?)。

实际上,你所做的一切就是在给定条件A,B和C的情况下问一个"我该如何做X?"问题,没有说明你为什么要做X,或者为什么存在条件A,B和C,或者你是否100%确定它们存在且无法解决。

如果你真正说的是"我不想在写一个函数的时候点击{TAB} 40次,"那么真正的问题是你需要一个更好的文本编辑器。如果你真正说的是"我碰巧发现缩进在美学上是不愉快的,"那么你应该考虑(a)论证的另一面是什么;也就是说,人们为什么Python使用缩进作为语法才有用; (b)你在这方面的审美偏好是否比你在(a)中提出的理由更重要; (c)鉴于这些事情,Python是否是您个人用来完成任何您自己的大规模目标的正确工具。 (可以不将缩进作为语法特征;但这对于Python来说是如此基本,以至于在某种程度上与它有哲学上的对立是一个强有力的迹象表明Python可能不是你理想的语言如果您真正要说的是,您将从需要在两个不同情况下运行的代码分解为两个模块中受益,那么重构将有利于您实现您的编程目标。如果您所说的是您已经获得了完全不可能重构的意大利面条代码,那么在您尝试中止模块导入之前,这确实是第一个需要解决的问题。 / p>