【问题标题】:Python: calling external functions within functionsPython:在函数中调用外部函数
【发布时间】:2016-01-19 02:16:57
【问题描述】:

我是 Python 新手,遇到了一个问题:我想编写一个函数 (Jacobian),它接受一个函数和一个点作为参数,并在给定点返回该函数的 jacobian

不出所料,Jacobian 依赖于 NumPy 和 SciPy。当我从另一个脚本调用 Jacobian 时,我得到:

  1. 显示我无法将模块导入函数的错误(当我在 Jacobian 中有 NumPy/SciPy 的导入语句时)或
  2. 各种NumPy/Scipy函数(如zeros())未定义的错误,(当我省略import语句以避免上述错误时。

我做错了什么?

另外,如果有人知道Jacobian 的实现,那也很有用。 SciPy 中似乎没有。

【问题讨论】:

  • 你能发布一些给你带来问题的代码吗?您所描述的内容绝对应该是可能的,因此可能是导致这种情况的代码的一些平凡细节。
  • 如何导入可以粘贴代码吗?
  • 这里是one page,讨论如何计算雅可比行列式。请记住,由于 Numpy 以数值方式(而非符号方式)工作,因此您的数值导数通常不会完全准确。

标签: python python-3.x


【解决方案1】:

您可以在模块级别导入,然后在任何函数中使用导入的名称。 或者您可以直接在函数中导入任何所需的名称。

在一种情况下你不能在函数中使用import:你不能使用from somemodule import *,因为Python编译器想知道函数中的所有局部变量,而import *它无法分辨提前将导入哪些名称。

解决方案很简单:永远不要使用import *,始终准确导入您想要使用的名称。

附:如果您复制导致问题的代码和您收到的确切错误消息,这会有所帮助。我在这里猜测这是您的问题,但如果您提供相关详细信息,您将获得更快、更准确的答案。

【讨论】:

  • 请注意,from ... import * 在 Python 2.x 中是允许的,所以我猜测 OP 使用的是 3.x。当然,实际错误会发生,所以我们不必猜测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2017-12-06
  • 1970-01-01
  • 2021-03-06
  • 2022-01-21
  • 2018-06-12
相关资源
最近更新 更多