看板 Python 關於我們 聯絡資訊
小弟目前在自學Python,之前有幾年MATLAB和幾個月R的經驗 現在遇到些問題想請教各位板大 程式碼如下: backsub.py http://pastebin.com/q2uzRfRJ 問題: import numpy from numpy import * import backsub as sta sta.backsub(X,y) 跳出錯誤訊息: NameError: name 'zeros' is not defined 但如果把backsub.py的程式碼整個複製到IDLE中執行後 backsub(X,y) 就成功且正確跑出來了 似乎def func中呼叫不到zeros這個function 因此懷疑是不是和local vs global有關 但辜狗一下都只是看到針對variable沒看到對function的說明 異想天開在程式碼加上 global zeros 一樣無法成功跑出sta.backsub(X,y) 請問到底是什麼原因呢? 謝謝! -- ○ 啊~ ○○ 咿~ ○ 喔~ 嗯~ ㄥ︹○ ︽〕 ○\︿ ○ 》 ﹨︿ ○︿/︿ ○≦\_ (十面埋伏) (針鋒相對) (腹背受敵) (騰雲駕霧) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 184.6.253.131 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1440949878.A.8E2.html
chenstin: 看起來是 "from numpy import *" 要放在backsub.py裡 08/31 00:09
謝謝C大 其實我第一次就有把'from numpy import *'寫在backsub.py裡 但是import backsub as sta時跳出下列錯誤訊息,所以我就刪了 SyntaxError: import * only allowed at module level 剛剛發現變成arange這個function呼叫不到... 所以靈光一現,不用import *,而是把會用到的三個numpy::function寫進去 'from numpy import zeros, arrange, dot' 就成功了! 但對原理還是不太了解.... 請問有板大能幫忙解釋一下並提供其他解決法嗎? 畢竟要是下次是三十個而不是三個function那就麻煩了... ※ 編輯: MADNUG (184.6.253.131), 08/31/2015 01:09:15
tiefblau: import * 就一定要寫在moudle level啊 你是希望啥解釋?? 08/31 10:48
MADNUG: 就是請問大大為何我在外層已經import *了,def內還是呼叫 08/31 11:39
MADNUG: 不到function?那除了在def內把需要用到的function一個一 08/31 11:39
MADNUG: 個import之外,有無其他方法? 08/31 11:39
uranusjr: 看不懂你在講什麼, 把完整的程式放出來才有得談 08/31 13:19