关于 import


1 import

import可用于导入一个Python的标准模块,包括.py文件或带有__init__.py的文件目录。

在Python中,import一个模块后,若再次import该模块,不会重新加载指定模块,而是把该模块的内存地址给引用到本地环境变量。即其id是相同的。

首先定义一个foo模块

 print('This is foo')
def act():
print('This is foo function: act')

然后在另一个模块中导入foo,

 import foo
print('First time import "foo", id is', id(foo))
print('This is impor')
import foo
print('Second time import "foo", id is', id(foo))
foo.act()

运行结果

This is foo
First time import "foo", id is 57152600
This is impor
Second time import "foo", id is 57152600
This is foo function: act

最终两次显示的id是相同的,且不显示foo中的打印语句,说明其内存地址没变,只是本地引用。

2 reload

利用importlib的reload函数对已经加载的模块进行重新加载,一般用于原模块有变化的特殊情况下,reload前该模块必须已经import过。

 import importlib
import foo
importlib.reload(foo)

3 __import__

__import__与import的功能相同,但是__import__是一个函数,只接受字符串,其实import语句也是调用这个函数进行工作的。

<import sys> equals to <sys = __import__(’sys’)>

调用可以通过del删除上次的import完成unimport

 import sys
__import__('foo')
print(sys.modules['foo'])
del sys.modules['foo']
__import__('foo')
__import__('foo')
'''
# euqal to "from foo import act"
f = __import__('foo', fromlist=('act',))
f.act()
'''

Note: import 只进行一次加载的特性,可以用于实现单例模式。

最新文章

  1. 使用Jenkins配置Git和Maven的自动化构建
  2. ubuntu 14.04 下evolution邮箱客户端设置(腾讯企业邮箱)
  3. CSS3新增基础属性总结——20160409(易达客)
  4. Xcode配置libdc1394
  5. Scala之Map,Tuple
  6. LeetCode题解 343.Integer Break
  7. Cnm%(个人模版)
  8. AM调制的FPGA实现
  9. C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化
  10. C#取出重复的方式以及用字典存储以键存储集合的方法
  11. 【README.md】Markdown语言常用语法
  12. Windows x64汇编函数调用约定
  13. _Bool and bool
  14. gdbserver
  15. DOS文件转换成UNIX文件格式详解
  16. AOJ 2224 Save your cats (Kruskal)
  17. Java7 新特性: try-with-resources
  18. 深入浅出SQL Server中的死锁(实战篇)
  19. 2017-08-20 block,inline和inline-block概念和区别
  20. 《Nginx - location配置》

热门文章

  1. 《Cracking the Coding Interview》——第6章:智力题——题目6
  2. USACO Section1.3 Prime Cryptarithm 解题报告
  3. 利用socket.io构建一个聊天室
  4. 四 Android Capabilities讲解
  5. JavaScript显示当前时间的操作
  6. Python全栈 MySQL 数据库 (索引、数据导入、导出)
  7. mysql安装目录、配置文件存放位置
  8. PPC Windows Mobile判断网络(gprs)连接与否代码
  9. ubuntu16.04 使用问题笔记
  10. 多线程 线程池 ExecutorService