[问题] 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