【发布时间】:2020-04-20 08:39:33
【问题描述】:
我在 Python 中遇到了非常奇怪的行为。 我是一名电子工程师。所以我有时在方程中使用常数'e'。
from math import *
try:
eval('print(log(e))')
except Exception as e:
print(e)
try:
eval('print(long(e))')
except Exception as e:
print(e)
try:
eval('log(e)')
except Exception as e:
print(e)
输出是
1.0
name 'long' is not defined
name 'e' is not defined
我想念输入 log(e) 到 long(e)。在那个方程之前 log(e) 运行良好,但是 long(e) 之后的第二个 log(e),Python 不理解 'e'。
你知道那里发生了什么吗?
我在 Windows 上使用 python3.8.2。
【问题讨论】:
-
您还将异常命名为
e。此外,您应该很少使用通配符导入。 -
将“Exception as e”更改为“Exception as err”(并将 e 更改为 err in print)然后再试一次?
-
哇。你是对的。我将“Exception as e”更改为“Exception as err”,它工作正常。非常感谢。
-
我正在制作简单的基于文本的计算器。所以 eval 很容易实现。我听说'eval'有点危险。但用户只有我。 :)
-
@Jens 在编辑问题中的代码时要非常小心 - 在这种情况下,如果没有抛出错误,则不会输入 except 块并且 e 不会'不要被遮蔽.
标签: python