2011-12-20 105 views
0

我是Python新手,遇到问题:我想编写一个函数和一个点作为参数的函数,并返回该函数的jacobian给定点。Python:在函数内调用外部函数

不出所料,Jacobian依靠NumPy的和SciPy的。当我打电话Jacobian从另一个脚本,我得到两种:

  1. ,说我无法导入模块插入函数的错误(当我在Jacobian用于与NumPy/SciPy的import语句)或
  2. 的错误,各种NumPy的/ SciPy的功能(例如zeros())没有定义,(当我省略了import语句,以避免上述错误。

我在做什么错?

另外,如果有人ķ实施Jacobian的一个实例,这也是有用的。 SciPy似乎没有一个。

+3

你可以发布一些代码给你一个问题吗?你所描述的应该是可能的,所以它可能是导致这种情况的一些普通细节。 – 2011-12-20 21:24:27

+0

你怎么导入它可以粘贴代码? – soField 2011-12-20 21:25:17

+0

这里的[一页](http://old.nabble.com/calculating-numerical-jacobian-td20506078.html),讨论计算雅可比。请记住,因为Numpy的数值工作(不是象征性的),你的数值导数一般不会是完全准确的。 – 2011-12-20 21:32:41

回答

2

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

有一个情况下,你不能使用import函数内部:你不能这样做from somemodule import *因为Python的编译器要知道所有的局部变量的函数,并将import *不能事先什么名字会告诉被导入。

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

P.S.如果您复制出现问题的代码和您正在收到的错误消息,它会有所帮助。我在这里猜测,这是你的问题,但如果你提供相关的细节,你会得到更快,更准确的答案。

+0

请注意,'from ... import *'在Python 2.x中是允许的,所以我猜测OP使用的是3.x.当然,实际的错误会让我们不必猜测。 – 2011-12-20 21:57:48