【问题标题】:Python: Stop reading a package [duplicate]Python:停止读取包[重复]
【发布时间】:2015-11-27 00:59:29
【问题描述】:

我想知道如何停止阅读包裹。

例如,

#!/usr/bin/python
import os
FLAG= True if 'TEST' in os.environ else False
if not FLAG:  return

def test():
  print 'test is defined'

但实际上“返回”失败:

SyntaxError: 'return' outside function

目的是检查一些系统依赖,如果不满足就停止读包。

sys.exit(0) 不起作用,因为它会停止整个程序。

另一种解决方案可能是决定是否在包外导入,例如:

FLAG= True if 'TEST' in os.environ else False
if FLAG:  import THE_PACKAGE

但我认为这个决策最好在包内完成,因为这是通用过程。

有没有什么好办法,比如从包裹里“退货”?

谢谢。

【问题讨论】:

    标签: python


    【解决方案1】:

    简而言之——你不能。有一些(hacky)解决方法。例如您可以raise ImportError 并依靠用户来捕获它,或者您可以在函数体中定义仅在满足条件时才执行的所有内容:

    def _main():
        class Foo(object):
            pass
        global Foo
    
        ...
    
    if condition:
        _main()
    

    这不是我的建议(很快就会变得很麻烦)。

    我能想到的“最佳”示例是 python 的 os 包——我建议您研究那里介绍的方法。基本上,他们检测系统,然后使用from XYZ import * 将满足适当接口的函数导入os 命名空间。这是您(或多或少)在您的问题中描述的解决方案,并且是我绝对推荐的方式。

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      相关资源
      最近更新 更多