python动态加载变量示例分享


Posted in Python onFebruary 17, 2014

众所周知,程序在启动后,各个程序文件都会被加载到内存中,这样如果程序文本再次变化,对当前程序的运行没有影响,这对程序是一种保护。

但是,对于像python这样解释执行的语言,我们有时候会用到“from 模块 import 变量名”这样的形式,如果这个变量直接被定义在文件当中,那么这些变量在程序开始时就会被定义、赋值,运行过程中值不变。如果打算在运行过程中对这个模块进行重写,那么更改后的变量值是无法被使用的。

对于这个问题,可以换一种思路,将这个模块中的变量定义在函数里,而函数是在程序运行的时候动态执行的,这样就能够获取到变量的最新值。下面是例子:

首先,不使用函数的情况: 

#model1.py
p_hello = 'hello world!'
#test1.py
from model1 import p_hello
file = open('model1.py', 'w')
file.write("p_hello = '%s!'"%('hello you'))
file.close()
print p_hello

这样,执行test1.py的时候,出现的结果仍然是'hello world',而非‘hello you',说明变量已经加载到内存中,尽管该模块的文件在硬盘上已经被重写。

接下来,使用函数的情况:

#model1.py
def rule():
    p_hello = 'hello world!'
    return locals()
#test1.py
from model1 import rule
file = open('model1.py', 'w')
file.write('def rule():\n')
file.write("    p_hello = '%s!'\n"%('hello you'))
file.write("    return locals()\n")
file.close()
p_hello = rule()['p_hello']
print p_hello

这样,print出来的结果就是hello you 了,因为在运行的时候,先执行了一遍这个函数,再通过函数获取了这个变量,这样就会获得新值。

Python 相关文章推荐
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
PyTorch之图像和Tensor填充的实例
Aug 18 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
Oct 12 Python
布隆过滤器的概述及Python实现方法
Dec 08 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
Python常驻任务实现接收外界参数代码解析
Jul 21 Python
Python竟然能剪辑视频
May 25 Python
Python音乐爬虫完美绕过反爬
Aug 30 Python
python多次执行绘制条形图
Apr 20 Python
python文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 #Python
python实现bitmap数据结构详解
Feb 17 #Python
python实现ftp客户端示例分享
Feb 17 #Python
用smtplib和email封装python发送邮件模块类分享
Feb 17 #Python
python类参数self使用示例
Feb 17 #Python
python实现爬虫下载漫画示例
Feb 16 #Python
python发送邮件示例(支持中文邮件标题)
Feb 16 #Python
You might like
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php 高效率写法 推荐
2010/02/21 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
Bootstrap框架动态生成Web页面文章内目录的方法
2016/05/12 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
python字符串格式化方式解析
2019/10/19 Python
Python魔术方法专题
2020/06/19 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
教师自我鉴定
2013/12/13 职场文书
寄语十八大感言
2014/02/07 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
普通党员个人整改措施
2014/10/27 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
源码安装apache脚本部署过程详解
2022/09/23 Servers