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中的类与实例
Apr 27 Python
Python ftp上传文件
Feb 13 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
python进行TCP端口扫描的实现
Dec 21 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
Flask框架模板渲染操作简单示例
Jul 31 Python
基于Django实现日志记录报错信息
Dec 17 Python
pyqt5中动画的使用详解
Apr 01 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
如何基于python把文字图片写入word文档
Jul 31 Python
python处理json数据文件
Apr 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
php中使用websocket详解
2016/09/23 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
基于JS代码实现导航条弹出式悬浮菜单
2016/06/17 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
关于TypeScript模块导入的那些事
2018/06/12 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
python深度优先搜索和广度优先搜索
2018/02/07 Python
python删除不需要的python文件方法
2018/04/24 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
Python新手学习装饰器
2020/06/04 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
精彩的大学生自我评价
2013/11/17 职场文书
教师评优事迹材料
2014/01/10 职场文书
《雾凇》教学反思
2014/02/17 职场文书
交通工程专业推荐信
2014/09/06 职场文书
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers