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 相关文章推荐
在Django框架中设置语言偏好的教程
Jul 27 Python
python框架中flask知识点总结
Aug 17 Python
对python csv模块配置分隔符和引用符详解
Dec 12 Python
python使用zip将list转为json的方法
Dec 31 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
python实现扑克牌交互式界面发牌程序
Apr 22 Python
Python flask路由间传递变量实例详解
Jun 03 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
使用python操作lmdb对数据读取的实例
Dec 11 Python
python基础之//、/与%的区别详解
Jun 10 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
一个图形显示IP的PHP程序代码
2007/10/19 PHP
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
php学习之function的用法
2012/07/14 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
js中使用使用原型(prototype)定义方法的好处详解
2016/07/04 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
wxpython绘制音频效果
2019/11/18 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
Python之字典对象的几种创建方法
2020/09/30 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
平民服装店创业计划书
2014/01/17 职场文书
公司年会主持词
2014/03/22 职场文书
个人培训自我鉴定
2014/03/28 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
无房证明样本
2015/06/17 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
Oracle中DBLink的详细介绍
2022/04/29 Oracle