Python 3.3中的异常提升

Nov*_*Cai 0 python

我在书中有这个例子,但它在我的python 3.3中不起作用

x = 'item found'

def search():
    raise x or return

try:
    search()
except x:
    print('exception')
else:
    print('no exception')
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么?

Mar*_*ers 5

简单:return是一种陈述,而不是一种表达.声明必须按照自己的方式出现.raise它也是一个声明,它期望它的表达式来评估要引发的异常,但是声明都x没有return满足.

就目前而言,这条线完全是胡说八道.它不是有效的Python.

相反,Python解析器会将此代码标记为无效,并为整个文件引发SyntaxError异常.实际上不会运行文件中包含的代码:

  File "demo.py", line 4
    raise x or return
                    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)