If statement 为什么python中的代码是有效的?没有if与else匹配
没有与else:语句之一匹配的if语句。除非在if块内进行尝试,否则会影响缩进吗If statement 为什么python中的代码是有效的?没有if与else匹配,if-statement,If Statement,没有与else:语句之一匹配的if语句。除非在if块内进行尝试,否则会影响缩进吗 if 0 != sys.argv[1].find("clean"): #Dont check if we are cleaning! if sys.platform.startswith("win"): try: files = O.listdir(O.path.join(libdirs)) print "files is ",files except:
if 0 != sys.argv[1].find("clean"): #Dont check if we are cleaning!
if sys.platform.startswith("win"):
try:
files = O.listdir(O.path.join(libdirs))
print "files is ",files
except:
raise Exception("The FMI Library binary cannot be found at path: "+str(O.path.join(libdirs)))
for file in files:
if "fmilib_shared" in file and not file.endswith("a"):
print "was true for ", file
shutil.copy2(O.path.join(libdirs,file),O.path.join(".","src","pyfmi"))
fmilib_shared = O.path.join(".","src","pyfmi",file)
print "fmilib_shared is ",fmilib_shared
break
else: # THIS IS THE ELSE BLOCK IN QUESTION
print "We have entered the else block in question"
raise Exception("Could not find FMILibrary at: %s"%libdirs)
print "copy_gcc_lib flying sheep ", copy_gcc_lib
if copy_gcc_lib:
path_gcc_lib = ctypes.util.find_library("libgcc_s_dw2-1.dll")
if path_gcc_lib != None:
shutil.copy2(path_gcc_lib,O.path.join(".","src","pyfmi"))
gcc_lib = O.path.join(".","src","pyfmi","libgcc_s_dw2-1.dll")
代码来自PyFMI库的setup.py文件。
else
语句连接到for
循环,而不是除
块之外的。在for
循环上使用else
子句是非常好的,如果循环耗尽了它正在迭代的列表,它将被执行。有关更多文档,请参阅
代码中发生的情况是,如果files=…
导致异常,它将被捕获,并且信息性消息将与新异常一起打印(在这种情况下,将永远不会执行for
循环)。如果没有异常,则for
循环将在文件上迭代搜索特定的文件。如果未找到此文件,则将执行for
循环中的else
子句,并引发异常。但是,如果找到文件,break
语句将导致for
循环提前终止,因此将不会执行else
子句
要回答您的问题,try-except块不会影响缩进