Python中的import语句可以导入module文件,但是import语句只是第一次导入的时候会执行module文件中的代码,然后就会把导入的模块文件存入到内存,当再次导入的时候,Python是直接从内存里面取出module文件,而不会执行module文件的内容了,而reload函数强制Python重新导入并执行module文件。

假设有module文件a.py:

def changer():
print("First Version")

然后在可交互的控制台执行如下代码:

>>>import a
>>>a.changer()
"First Version"

然后我们不退出可交互式控制台,然后修改a.py:

def changer():
pirnt("Second Version")

然后在到可交互的控制台执行如下代码:

>>>import a
>>>a.changer() # 已经导入的module文件,直接从内存里面取,不会执行
"First Version" >>>from imp import reload # 对于Python 3.X来说,reload不是内置函数,而是imp module的一个函数
>>>reload(a)
<module 'a' form '/home/chaochao/python/a.py'>
>>>a.changer() # 对module文件a.py的改动反映出来了
"Sencond Version"

注意事项

1 由于import导入的moudle文件,使用的时候需要使用module.attr的方式,而reload会强制运行module文件,那么,会对使用import导入进来的module文件有影响,因为reload执行module文件后,module.attr的值会被覆盖;

2 由于from导入的module文件,其本质是进行了一个赋值操作,即在当前文件中(即执行from语句的文件)进行attr = module.attr,那么,reload函数对reload运行之前的from语句没有影响,换句话说,当前文件(即执行from语句的文件)中的变量attr与module.attr引用的已经是两个不同的变量了;

3 假设a.py自己import b.py,那么reload(a)并不会reload(b),也就是说,reload不具有传递性

4 使用reload的前提,是reload的 模块,之前已经使用import或者from导入成功了,否则,reload也无法生效

5 对于Python 2.X来说,reload是一个内置函数,而Python 3.X将reload函数移动到了imp模块当中

Python中的reload函数的更多相关文章

  1. python --- Python中的callable 函数

    python --- Python中的callable 函数 转自: http://archive.cnblogs.com/a/1798319/ Python中的callable 函数 callabl ...

  2. python中使用zip函数出现<zip object at 0x02A9E418>

    在Python中使用zip函数,出现<zip object at 0x02A9E418>错误的原因是,你是用的是python2点多的版本,python3.0对python做了改动 zip方 ...

  3. [转载]python中multiprocessing.pool函数介绍

    原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...

  4. Python 中的isinstance函数

    解释: Python 中的isinstance函数,isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数object是cla ...

  5. Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下   Py ...

  6. python中multiprocessing.pool函数介绍_正在拉磨_新浪博客

    python中multiprocessing.pool函数介绍_正在拉磨_新浪博客     python中multiprocessing.pool函数介绍    (2010-06-10 03:46:5 ...

  7. 举例详解Python中的split()函数的使用方法

    这篇文章主要介绍了举例详解Python中的split()函数的使用方法,split()函数的使用是Python学习当中的基础知识,通常用于将字符串切片并转换为列表,需要的朋友可以参考下   函数:sp ...

  8. python中的生成器函数是如何工作的?

    以下内容基于python3.4 1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函 ...

  9. python中的map()函数

    MapReduce的设计灵感来自于函数式编程,这里不打算提MapReduce,就拿python中的map()函数来学习一下. 文档中的介绍在这里: map(function, iterable, .. ...

随机推荐

  1. MySQL数据库修改数据表类型(引擎)的方法

    MySQL数据库使用事务,相关数据表必须为InnoDB引擎 查看数据表状态: SHOW TABLE STATUS FROM wawa WHERE NAME='ww_invite_code_temp'; ...

  2. python 基于Anaconda import numpy 报错 Importing the multiarray numpy extension module failed.

    在windows中安装了 Anaconda 运行时报错 原因是系统环境变量起初并没有引入 E:\Tools\Anaconda\Library\bin 解决办法: 在系统环境变量中加入    E:\To ...

  3. java 用接口计算圆柱的体积和面积并添加颜色

    import java.util.Scanner; class Test { public static void main(String[] args) { fangfa i = new fangf ...

  4. Grep/find查找文件

    1. 查找secret 函数所在的文件位置grep -rn secret * grep -rn "secret" * 2. find 查找当前目录下,比while2 时间新并且名字 ...

  5. VMware中Linux的NAT相关配置

    我这边使用的是CentOS7,因为搭建环境主要是为了后期做集群,所以会搭建三台机器master,slave1,slave2. 一.设置固定IP 1. 进入到/etc/sysconfig/network ...

  6. axios请求封装和异常统一处理

    前端网络请求封装前端采用了axios来处理网络请求,为了避免在每次请求时都去判断各种各样的网络情况,比如连接超时.服务器内部错误.权限不足等等不一而足,我对axios进行了简单的封装,这里主要使用了a ...

  7. Prism for WPF 搭建一个简单的模块化开发框架 (一个节点)

    原文:Prism for WPF 搭建一个简单的模块化开发框架 (一个节点) 这里我就只贴图不贴代码了,看看这个节点之前的效果 觉得做的好的地方可以范之前的文章看看 有好的建议也可以说说   填充数据 ...

  8. 青岛Uber优步司机奖励政策(1月4日~1月10日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  9. Git学习系列 (二)

    #克隆目录并重命名为newname,默认目录名是使用.git前的grit git clone git://github.com/schacon/grit.git newname #将所有已经跟踪过的文 ...

  10. leetcode--笔记8 Fizz Buzz

    题目要求: Write a program that outputs the string representation of numbers from 1 to n. But for multipl ...