[問題] def func內呼叫不到builtin function

看板Python作者 (就是比你長)時間10年前 (2015/08/30 23:51), 10年前編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/2 (看更多)
小弟目前在自學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

08/31 00:09, , 1F
看起來是 "from numpy import *" 要放在backsub.py裡
08/31 00:09, 1F
謝謝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

08/31 10:48, , 2F
import * 就一定要寫在moudle level啊 你是希望啥解釋??
08/31 10:48, 2F

08/31 11:39, , 3F
就是請問大大為何我在外層已經import *了,def內還是呼叫
08/31 11:39, 3F

08/31 11:39, , 4F
不到function?那除了在def內把需要用到的function一個一
08/31 11:39, 4F

08/31 11:39, , 5F
個import之外,有無其他方法?
08/31 11:39, 5F

08/31 13:19, , 6F
看不懂你在講什麼, 把完整的程式放出來才有得談
08/31 13:19, 6F
文章代碼(AID): #1LuoPsZY (Python)
文章代碼(AID): #1LuoPsZY (Python)