[問題] import~from~問題請教

看板Python作者 (溫柔殺手)時間8年前 (2017/06/19 18:59), 編輯推噓5(5031)
留言36則, 7人參與, 最新討論串1/1
請教各位大大一下 import time 與 from time import * 在呼叫方法時為什麼會不一樣? import time print(time.ctime()) from time import * print(ctime) 兩個都是將time整個module import進來。 為什麼不能用同一個方法呼叫ctime? 凡請撥冗解惑,感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.62.184.14 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1497869997.A.59F.html

06/19 19:07, , 1F
一個是引入module本身,所以透過module參考裡面的東西
06/19 19:07, 1F

06/19 19:07, , 2F
另一個是引入該module裡的東西,所以就能直接用
06/19 19:07, 2F

06/19 19:29, , 3F
題外話:通常建議使用完整路徑import
06/19 19:29, 3F

06/19 19:29, , 4F
from ... import ...
06/19 19:29, 4F

06/19 19:37, , 5F
namespace不一樣而已
06/19 19:37, 5F

06/19 19:49, , 6F
你還是老實點去找一本書來好好唸..
06/19 19:49, 6F

06/19 19:53, , 7F
樓上的大大我有買書喔,我就是書中看不懂才上來請教阿。
06/19 19:53, 7F

06/19 19:53, , 8F
書裡面沒有寫這兩者的差異。
06/19 19:53, 8F

06/19 19:55, , 9F
k大,請教一下,這樣的好處是什麼呢?依照您的說法,這個
06/19 19:55, 9F

06/19 19:57, , 10F
案例,最好是用from time import *會比較好嗎?
06/19 19:57, 10F

06/19 19:59, , 11F
假設一個module裡有A、B、C三個類別
06/19 19:59, 11F

06/19 20:00, , 12F
你只要用到A 就import A就好 如果其他也要用到 就整個
06/19 20:00, 12F

06/19 20:00, , 13F
import進來 不需要再分別import
06/19 20:00, 13F

06/19 20:56, , 14F
不同module可能會有同名的東西
06/19 20:56, 14F

06/20 02:06, , 15F
主要是像M大講的 一方面避免不同module有同名的東西
06/20 02:06, 15F

06/20 02:06, , 16F
一方面完整路徑在之後交接或自己自己看的時候 比較
06/20 02:06, 16F

06/20 02:06, , 17F
容易看懂
06/20 02:06, 17F

06/20 02:07, , 18F
遇到同名可以使用
06/20 02:07, 18F

06/20 02:07, , 19F
from ... import ... as ...
06/20 02:07, 19F

06/20 02:07, , 20F
這樣import也不錯用
06/20 02:07, 20F

06/20 02:29, , 21F
我好像講的有點亂XD我重講一下我的看法好了
06/20 02:29, 21F

06/20 02:29, , 22F
我習慣使用from ... import ...
06/20 02:29, 22F

06/20 02:29, , 23F
一方面是交接或review可以清楚知道說用了模組裡的哪
06/20 02:29, 23F

06/20 02:29, , 24F
些函數(當然如果一個模組引用很多就不用分別引用了)
06/20 02:29, 24F

06/20 02:29, , 25F
一方面是如果遇到同名的模組或function 可以避開錯
06/20 02:29, 25F

06/20 02:29, , 26F
誤 像是from a.b.c import f 或 from a.c.b import
06/20 02:29, 26F

06/20 02:29, , 27F
f 或 from a import f 可能我講的比較誇張 但我真的
06/20 02:29, 27F

06/20 02:29, , 28F
看過有人的code長類似這樣 這時候如果不完整路徑 im
06/20 02:29, 28F

06/20 02:29, , 29F
port 就會可能import 到錯誤的東西
06/20 02:29, 29F

06/20 02:29, , 30F
完整路徑就是指從最開頭的地方開始一直到你要使用的
06/20 02:29, 30F

06/20 02:29, , 31F
地方
06/20 02:29, 31F

06/20 02:29, , 32F
PS:你import混亂或很亂可以使用 from ... import ..
06/20 02:29, 32F

06/20 02:29, , 33F
. as ...來整理一下
06/20 02:29, 33F

06/20 02:29, , 34F
當然,這些都只是我自己個人的鄙見,可能不同人會有
06/20 02:29, 34F

06/20 02:29, , 35F
不同看法,我提供我的想法給你參考
06/20 02:29, 35F

06/20 20:31, , 36F
感謝K大指導
06/20 20:31, 36F
文章代碼(AID): #1PHwwjMV (Python)