gpt4 book ai didi

python - 以下代码中的 'as' 关键字在做什么?

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:22 25 4
gpt4 key购买 nike

我正在学习 Python 中的“异常”。
考虑以下代码:

def fancy_divide():
try:
print(5/0)
except Exception:
print(Exception)

如果我运行上面的代码,即

fancy_divide()

它打印出 <class 'Exception'> .但是如果我修改代码:

def fancy_divide():
try:
print(5/0)
except Exception as ex:
print(ex)

它在调用函数 fancy_divide() 时打印出“被零除” .
为什么会有这种差异?
我认为 'as' 关键字只是重命名对象。

最佳答案

它表示对于 as 之后的作用域,将有一个名为 ex 的变量,该变量是从 Exception 创建的。

在您的情况下,不同之处在于,在示例一中,您打印出类 Exception,在示例二中,您打印出异常类型的对象。

>>> print(int)
<class 'int'>
>>> print(int(1))
1
>>>

我经常在打开文件时看到并使用它:

with open(filename) as f:
f.read()

在 python 中 documentation它有以下示例:

>>> try:
... raise NameError('HiThere')
... except NameError:
... print('An exception flew by!')
... raise
...
An exception flew by!
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: HiThere

请注意代码不会对类 NameError 做任何事情。因为他们在那个 block 中,所以他们知道这是一个 NameError。如果他们想对抛出的错误对象做些什么,那么他们将不得不用 as 重写代码:

>>> try:
... raise NameError('HiThere')
... except NameError as e:
... print(e)
... print('An exception flew by!')
... raise
...

关于python - 以下代码中的 'as' 关键字在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50914204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com