我想在C中做这样的事情:
#ifdef SOMETHING
do_this();
#endif
但在Python中,这不是jive:
if something:
import module
我做错了什么?这首先是可能的吗?
答案 0 :(得分:17)
应该可以正常工作:
>>> if False:
... import sys
...
>>> sys
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
>>> if True:
... import sys
...
>>> sys
<module 'sys' (built-in)>
答案 1 :(得分:0)
在Python中有一个名为“Exception”的内置功能。根据您的需要:
try:
import <module>
except: #Catches every error
raise #and print error
有更复杂的结构,因此请在网上搜索更多文档。
答案 2 :(得分:0)
如果你得到这个:
NameError: name 'something' is not defined
那么这里的问题不是import
语句,而是使用something
,这个变量显然没有初始化。只要确保它被初始化为True或False,它就会起作用。
答案 3 :(得分:0)
在C构造中,条件定义#ifdef测试是否只存在“SOMETHING”,其中你的python表达式测试表达式的值是True还是False,在我看来两个非常另外,C构造在编译时进行评估。
基于原始问题的“某事”必须是(存在和)评估为真或假的变量或表达式,正如其他人已经指出的那样,问题可能在于未定义的“某事”变量。所以python中“最接近的等价物”就像是:if 'something' in locals(): # or you can use globals(), depends on your context
import module
或(hacky):
try:
something
import module
except NameError, ImportError:
pass # or add code to handle the exception
HTH