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 相关文章推荐
Python2.x版本中cmp()方法的使用教程
May 14 Python
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
利用python获取某年中每个月的第一天和最后一天
Dec 15 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
使用pyqt5 tablewidget 单元格设置正则表达式
Dec 13 Python
python实现人机五子棋
Mar 25 Python
python3.6使用SMTP协议发送邮件
May 20 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
Django cookie和session的应用场景及如何使用
Apr 29 Python
OpenCV实现常见的四种图像几何变换
Apr 01 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冒泡排序、快速排序、快速查找、二维数组去重实例分享
2014/04/24 PHP
Destoon模板制作简明教程
2014/06/20 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
PHP的自定义模板引擎
2017/03/24 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
php中关于换行的实例写法
2019/09/26 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
swiper 自动图片无限轮播实现代码
2018/05/21 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Python中使用支持向量机(SVM)算法
2017/12/26 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
树莓派使用USB摄像头和motion实现监控
2019/06/22 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
python numpy数组中的复制知识解析
2020/02/03 Python
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
SQL Server面试题
2016/10/17 面试题
遗体告别仪式主持词
2014/03/20 职场文书
平安工地建设方案
2014/05/06 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
合作协议书范本
2014/10/25 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
小学校长开学致辞
2015/07/29 职场文书
五年级作文之成长
2019/09/16 职场文书