我想知道如何停止阅读包裹。
例如,
#!/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)不起作用,因为它会停止整个程序。
另一种解决方案可能是决定导入或不导入OUTSIDE包,例如:
FLAG= True if 'TEST' in os.environ else False
if FLAG: import THE_PACKAGE
但我认为这个决策在包装内部更好,因为这是常见的过程。
有没有什么好办法,比如来自套餐的“退货”?
感谢。
答案 0 :(得分:2)
简而言之 - 你无法做到。有一些(hacky)解决方法。例如你可以raise ImportError
并依赖用户捕获它,或者你可以定义函数体中的所有东西,只有在满足条件时才会执行:
def _main():
class Foo(object):
pass
global Foo
...
if condition:
_main()
这不是我的建议(很快就会非常繁琐)。
" best"我可以想到的例子是python的os
包 - 我建议你研究那里提供的方法。基本上,它们检测系统,然后使用os
将满足相应接口的函数导入from XYZ import *
命名空间。这是您(或多或少)已在您的问题中描述的解决方案,并且我肯定会建议您这样做。