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

作者: yimean (溫柔殺手)   2017-06-19 18:59:54
請教各位大大一下
import time

from time import *
在呼叫方法時為什麼會不一樣?
import time
print(time.ctime())
from time import *
print(ctime)
兩個都是將time整個module import進來。
為什麼不能用同一個方法呼叫ctime?
凡請撥冗解惑,感謝。
作者: dannypsnl (秦書)   2017-06-19 19:07:00
一個是引入module本身,所以透過module參考裡面的東西另一個是引入該module裡的東西,所以就能直接用
作者: karta0910489 (coyote)   2017-06-19 19:29:00
題外話:通常建議使用完整路徑importfrom ... import ...
作者: mikapauli (桜花)   2017-06-19 19:37:00
namespace不一樣而已
作者: freeunixer (御劍客)   2017-06-19 19:49:00
你還是老實點去找一本書來好好唸..
作者: yimean (溫柔殺手)   2017-06-19 19:53:00
樓上的大大我有買書喔,我就是書中看不懂才上來請教阿。書裡面沒有寫這兩者的差異。k大,請教一下,這樣的好處是什麼呢?依照您的說法,這個案例,最好是用from time import *會比較好嗎?
作者: vi000246 (Vi)   2017-06-19 19:59:00
假設一個module裡有A、B、C三個類別你只要用到A 就import A就好 如果其他也要用到 就整個import進來 不需要再分別import
作者: Mchord (Mchord)   2017-06-19 20:56:00
不同module可能會有同名的東西
作者: karta0910489 (coyote)   2017-06-20 02:06:00
主要是像M大講的 一方面避免不同module有同名的東西一方面完整路徑在之後交接或自己自己看的時候 比較容易看懂遇到同名可以使用from ... import ... as ...這樣import也不錯用我好像講的有點亂XD我重講一下我的看法好了我習慣使用from ... import ...一方面是交接或review可以清楚知道說用了模組裡的哪些函數(當然如果一個模組引用很多就不用分別引用了)一方面是如果遇到同名的模組或function 可以避開錯誤 像是from a.b.c import f 或 from a.c.b importf 或 from a import f 可能我講的比較誇張 但我真的看過有人的code長類似這樣 這時候如果不完整路徑 import 就會可能import 到錯誤的東西完整路徑就是指從最開頭的地方開始一直到你要使用的地方PS:你import混亂或很亂可以使用 from ... import ... as ...來整理一下當然,這些都只是我自己個人的鄙見,可能不同人會有不同看法,我提供我的想法給你參考
作者: yimean (溫柔殺手)   2017-06-20 20:31:00
感謝K大指導

Links booklink

Contact Us: admin [ a t ] ucptt.com