python - 调用 eval() 时出现“NameError: name 'numpy' is not defined”
问题描述
x = 0
x2 = 0
f = "numpy.sin(x)"
e1 = eval(f)
e2 = eval(f, {"x":x2})
e2(但不是 e1)的行会产生错误:
NameError: name 'numpy' is not defined
为什么?
解决方案
由于在 e1 中,您没有覆盖全局变量,因此存在 numpy。在 e2 中,你是,所以解释器看不到你的导入。只需将 numpy 作为变量传递。
e2 = eval(f, {'numpy': numpy, 'x':x2})
推荐阅读
- sql - 使用变量作为表名动态sql不工作选择到表中
- neural-network - 在 Pytorch 中计算 3D CNN 的填充
- terraform - 在 aws_s3_bucket_notification 资源 (Terraform) 中创建动态主题块
- javascript - 如何隐藏单选按钮的选项
- c# - 不同版本的Nuget包版本解析
- c++ - 我需要 2 个 for 循环来填充 Eigen 中的矩阵,但我可以在 Matlab 中只用 1 个 for 循环填充它 - 我可以摆脱额外的 for 循环吗?
- python - 如何在python中有效地命名大量实例?
- tensorflow - 如何在这段代码中提取 20% 的递减损失?
- python - aiohttp,在 GET 上引发错误,无法向 https 网站发送 GET 请求
- unit-testing - asp net core 单元测试模型验证器未涵盖非必填字段