防止Python在不满足条件的if语句中检查语法错误

时间:2019-11-25 17:42:26

标签: python if-statement return syntax-error

(我完全理解return仅在函数内部有意义。)

我的问题是:考虑到以下代码中的mylist不是None,有没有办法防止Python将return的存在标记为语法错误并中断执行? / p>

mylist = [1,2,3]
if mylist is None: 
    return []
mylist = mylist + [4]

之所以问这个问题,是因为我经常在函数内运行大量代码,逐步查看其功能。

很明显,我不介意在满足if语句的条件时代码执行被中断。

但是我想知道是否有一种方法可以防止python在满足条件的if语句中检查语法错误。

按照下面的建议,我试图让python使用try / except忽略语法错误:

try:
    mylist=[1,2]
    if mylist is None:
        return []
except SyntaxError:
    pass

但是,在函数外仍然会出现一条有关使用return的消息,中断执行,就像try / except被忽略了。

3 个答案:

答案 0 :(得分:1)

您要的是不可能的。解析过程中会检测到语法错误,这些错误发生在运行时之前/代码运行之前,或者可以评估任何if语句。

答案 1 :(得分:0)

通过使用Python调试(pdb)包,您可以调试代码。 Python PDB Docs

答案 2 :(得分:0)

如果要在函数内部和外部使用大量代码,则可以在特定条件下使用不同于'return'的东西来退出执行,例如exit()或quit()或引发错误,例如

def test_fct():
   list = [1,2,3]
   if list is None: 
       raise RuntimeError("Invalid value") 
   list = list + [4]

OR

def test_fct():
   list = [1,2,3]
   if list is None: 
       exit(1)
   list = list + [4]

内部退出和退出会引发SystemExit,并将终止/重新启动整个python解释器,请参见。也 Python exit commands - why so many and when should each be used?

顺便说一句,我会避免命名变量“列表”,因为这会掩盖内置类型“列表”。