不過import方式有許多種,底下就用官方的例子來說明"From ... Import"和 "Import"的不同,底下的code實作兩個function,並存在 fibo.py內
- 如果使用"Import"來使用module時,會保留獨立的symbol table,所以就不用擔心function name衝突的問題。但碼農們就必須清楚告訴python 直譯器是使用哪一個function
此時可以使用dir() 來查看模組名稱
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'fibo']
繼續查詢fibo,可以發現裡面有 fib和 fib2這兩個function
>>> dir(fibo)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'fib', 'fib2']
- 如果使用"from fibo import fib"來使用module時,會將被匯入的function (fib)加入目前module的symbol table,所以就可能造成名稱衝突的問題,請小心使用。但是好處就是打的字比較少
此時可以使用dir() 來查看模組名稱,可以清楚看到沒有fibo這個名稱
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'fib', 'fib2']
參考資料:https://docs.python.org/2/tutorial/modules.html
懂了 謝謝
回覆刪除