在 Python 笔记本中为变量分配异常的正确方法是什么?

What is the correct way to assign an exception to a variable in a Python notebook?

提问人:p1unge 提问时间:9/26/2023 更新时间:9/26/2023 访问量:50

问:

我正在使用一个笔记本,该笔记本使用以下语法来设置变量,以便稍后在代码中引发异常:

data_format = raise NotImplementedError("Select a data format for your kaggle entry! See docstring of 'assemble_predictors_predictands' for description of data_format.")

但 VS Code 在运行笔记本时会引发此错误:

data_format = raise NotImplementedError("Select a data format for your kaggle entry! See docstring of 'assemble_predictors_predictands' for description of data_format.")
              ^ SyntaxError: invalid syntax`

将变量设置为等于异常的正确方法是什么?

python 异常 jupyter-notebook 语法错误

评论

1赞 Brian61354270 9/26/2023
例外只是像其他任何对象一样的对象。 无论评估结果如何,其工作原理都是一样的。a = bb
1赞 Brian61354270 9/26/2023
顺便说一句,看起来您正在尝试以一种非常规的方式使用。如果您重用内置异常来执行不同的操作,则使用您的代码的其他人可能会感到困惑。NotImplementedError
0赞 p1unge 9/26/2023
谢谢,@Brian61354270是的,我同意这是非常规的。不是我的代码,只是想让它在不做太多改动的情况下工作。不知道为什么这会抛出无效的语法错误,但有什么想法吗?

答:

3赞 jsbueno 9/26/2023 #1

“加薪”是一个陈述。尝试为变量分配一个“raise”语句,然后只提到该变量是一个指标,您应该学习更多 Python 语法、命令式编程和函数

如果你想尝试在不退后一步的情况下继续前进,无论如何都要检查这些概念,你可以把它写成一个函数

def data_format():
   raise NotImplementedError(...)

并像函数一样调用它。

只是为了保持答案完整:你也可以为一个变量分配一个 Exception 实例 - 但你需要在你希望异常发生的时候使用“raise”语句,而不仅仅是提及,或者尝试使用它:

data_format = NotImplementedError(...)
...
raise data_format

但是,您真的不应该这样做,因为如果您最终两次引发相同的异常对象,您将得到混乱的回溯。在引发异常时构造异常不太容易出错。

评论

0赞 p1unge 9/26/2023
谢谢,是的,我同意这不是最好的语法。这不是我的代码,只是想让它运行。你知道为什么 VS Code 会认为它是无效的语法吗?
1赞 user2357112 9/26/2023
@p1unge:因为它完全无效。它在任何 Python 版本中都从未有效。如果发现试图将语句分配给变量的代码,则发现垃圾代码已损坏。raise
1赞 p1unge 9/26/2023
好的,太好了,这就是我所期待的。我真的不明白原作者在这里想做什么。