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+django实现文件下载
Jan 17 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
python实现在pandas.DataFrame添加一行
Apr 04 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
Python运行提示缺少模块问题解决方案
Apr 02 Python
python 中关于pycharm选择运行环境的问题
Oct 31 Python
Python高并发和多线程有什么关系
Nov 14 Python
python openssl模块安装及用法
Dec 06 Python
用Python将GIF动图分解成多张静态图片
Jun 11 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实现合并discuz用户
2015/08/05 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
javascript学习笔记_浅谈基础语法,类型,变量
2016/09/19 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
2019/07/26 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python利用matplotlib绘制约数个数统计图示例
2019/11/26 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
医学专业大学生求职的自我评价
2013/11/27 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
办公室务虚会发言材料
2014/10/20 职场文书
小学教师个人总结
2015/02/05 职场文书
居安思危观后感
2015/06/11 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript