2011-12-20 104 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