声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写(有时候有空也会参与编写),所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!
开门见山,我个人更推荐使用from。
此时,有老粉丝可能会骂我“瞎JB扯蛋,之前在《Python系列教程227——使用import还是from》的文章中还说推荐使用import,现在怎么又说推荐使用from了呢”。粉丝大大息怒,下面我会给你一个完美的解释。
为什么之前推荐使用import,而在包导入时就推荐使用from了呢?因为import语句和包一起使用时,有些不方便,因为你必须经常在程序中重新输入路径。这个解释完美不?可能有同学还无法理解这个解释,下面我再用一些实例来解释清楚这个解释。
例如,在前面文章的例子中,如果我们使用import语句,在每次要得到z时,就得从dir1开始重新输入完整路径,并且每次都要重新执行整个路径。如果你想要尝试直接读取dir2或mod,就会得到一个错误。
>>>dir2.mod
NameError: name 'dir2' is not defined
>>>mod.z
NameError: name 'mod' is not defined
因此,让包使用from语句,就可以避免每次使用时都得重新输入路径,通常这样比较方便。另外,更重要的是,如果你重新改变目录树结构,from语句只需在程序代码中修改一次路径,而如果使用import则需要修改很多地方:
% python
>>>from dir1.dir2 import mod # Code path here only
dir1 init
dir2 init
in mod.py
>>>mod.z # Don't repeat path
3
>>>from dir1.dir2.mod import z
>>>z
3
当然,我们也可以使用import as语句来达到类似效果
>>>import dir1.dir2.mod as mod # Use shorter name (see Chapter 24)
>>>mod.z
3
老铁们,不知我解释清楚没有?