【发布时间】:2021-08-11 00:13:21
【问题描述】:
想要通过脚本获取一些参数/输入,并在不期望值时引发异常。
为了简化场景:
#!/usr/bin/env python3
foo = None or raise ValueError
但是看到如下错误:
File "./raise_on_assignment.py", line 3
foo = None or raise ValueError
^
SyntaxError: invalid syntax
我知道可以通过将其分成多行来消除错误,例如:
#!/usr/bin/env python3
foo = None
if not foo:
raise ValueError
但是,有没有办法用单线制作它?
【问题讨论】:
-
您应该能够将您的两行解决方案放在一行上。但是,将它放在一条线上不会获得任何收益。第一种方法失败,因为
raise ValueError不是表达式。 -
@Carcigenicate 你能给我举个例子,说明如何将多线合并成单线吗?我想要的只是当变量
foo是None(意味着用户没有提供参数的值)时,在同一行中引发异常。 -
只需使用您的两行代码并删除换行符。不过,再一次这样做,您将一无所获。 Smushed 代码不一定是更好的代码。
-
@Carcigenicate 是的。这就是为什么我想知道是否有更好的方法来做到这一点,使其紧凑且易于理解。弄脏不是我的意图。
-
if foo is None:<newline>raise ValueError分成两行将是最易读的方式。如果您不喜欢它的外观,可以将其包装在一个函数中。像def assert_truthy(val):<newline>if val is None:<newline>raise ValueError(f"The value was None!")这样的东西。如果您想要一个单行解决方案,那么您只需执行assert_truthy(foo)。 (请注意,<newline>只是我表示换行符。这不是有效的 Python 语法)。
标签: python-3.x exception variable-assignment raise