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之复习if语句
Oct 02 Python
python实现读取命令行参数的方法
May 22 Python
Python科学计算之NumPy入门教程
Jan 15 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
Python列表对象实现原理详解
Jul 01 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
使用Pandas将inf, nan转化成特定的值
Dec 19 Python
pytorch进行上采样的种类实例
Feb 18 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
python 实现PIL模块在图片画线写字
May 16 Python
基于Python把网站域名解析成ip地址
May 25 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
wordpress之wp-settings.php
2007/08/17 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
php实现session共享的实例方法
2019/09/19 PHP
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
微信小程序中使用自定义图标(阿里icon)的方法
2018/08/20 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
python格式化字符串实例总结
2014/09/28 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
为什么是 Python -m
2020/06/19 Python
在什么时候需要使用"常引用"
2015/12/31 面试题
电大自我鉴定范文
2013/10/01 职场文书
剪枝的学问教学反思
2014/02/07 职场文书
党员公开承诺书
2014/03/25 职场文书
书香校园建设方案
2014/05/02 职场文书
python中Matplotlib绘制直线的实例代码
2021/07/04 Python
Python Matplotlib绘制条形图的全过程
2021/10/24 Python