架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8658|回复: 1

[交流] python from import 和 import 详解

[复制链接]
发表于 2018-4-25 11:20:35 | 显示全部楼层 |阅读模式
摘自python学习手册, 用于记录。

  客户端可以执行import或from语句。如果模块还没有加载,这两个语句会去搜索、编译以及执行模块文件程序。主要差别在于,import会读取整个模块,所以必须进行定义后才能读取它的变量名;from将获取(或者是复制)模块特定的变量名。

  import使一个变量名引用整个模块对象,因此必须通过模块名称来得到该模块的属性(例如,module1.printer)。而from会把变量名复制到另一个作用域,所以它就可以直接在脚本中使用复制后的变量名,而不用通过模块(例如,printer)。

  from语句有破坏命名空间的潜质。如果使用from导入变量,而那些变量碰巧和作用域中现有变量重名,变量就会被悄悄的覆盖掉。使用import语句时就不存在这种问题,因为必须通过模块名才能获取其内容。不过,使用from时,只要你了解并预料到可能发生这种事,在实际情况下这就不是一个大问题了,尤其是当你明确列出导入变量名时(例如,from module import x, y, z)。

  另一方面,和reload调用同时使用时,from语句有比较严重的问题,因为导入的变量名可能引用之前版本的对象。再者,from module import *形式的确可能破坏命名空间,让变量名难以理解,尤其是在导入一个以上的文件时。

  比较务实的建议是:简单的模块一般倾向于使用import,而不是from。多数的from语句是用于明确列举想要的变量,而且限制在每个文件中只用一次from *形式。这样一来,任何无定义的变量名都可以认为是存在于from *所引用的模块内。当你必须使用两个不同模块内定义的相同变量名变量时,才真的必须使用import,这种情况下不能使用from。

吧唧吧唧说了一大顿,不知道说的啥,下面我们简单点说吧。

  • import Module      # 引入模块
  • from Module  import Other     # 引入模块中的类、函数或者变量
  • from Module import *     # 引入模块中的所有‘公开’成员


通俗点讲:

import 一班 #把整个一班的学生引入了进来
from 一班 import 小王 #只把一般的小王引入了进来

举例子:

那time包来例子,下面两种的写法结果是一样的,如下:


QQ截图20180425112006.jpg





上一篇:python如何包中的某一个函数的使用方法
下一篇:惠普笔记本&台式机专用Ghost Windows7 32&64 海驱版v201801
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2018-4-25 11:22:51 | 显示全部楼层
import datetime是引入整个datetime包,如果使用datetime包中的datetime类,需要加上模块名的限定。



如果不加模块名限定会出现错误:TypeError: 'module' object is not callable \ AttributeError: 'module' object has no attribute 'now'



from datetime import datetime是只引入datetime包里的datetime类,在使用时无需添加模块名的限定。



总结:Python导入模块的方法有两种:import module 和 from module import,区别是前者所有导入的东西使用时需加上模块名的限定,而后者不需要。

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-27 01:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表