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 win32com 操作Exce的l简单方法(必看)
May 25 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
Python读取Json字典写入Excel表格的方法
Jan 03 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
pandas数据处理基础之筛选指定行或者指定列的数据
May 03 Python
Sanic框架Cookies操作示例
Jul 17 Python
python3.4爬虫demo
Jan 22 Python
python实现猜拳小游戏
Apr 05 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
Python实现Word文档转换Markdown的示例
Dec 22 Python
浅谈Python响应式类库RxPy
Jun 14 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
生成静态页面的php函数,php爱好者站推荐
2007/03/19 PHP
五个PHP程序员工具
2008/05/26 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
JQuery设置时间段下拉选择实例
2014/12/30 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
浅析Vue自定义组件的v-model
2017/11/26 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python如何求解两数的最大公约数
2018/09/27 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python实现简单成绩录入系统
2019/09/19 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
Python实现粒子群算法的示例
2021/02/14 Python
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
工厂仓管员岗位职责
2014/01/01 职场文书
合作经营协议书范本
2014/04/17 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
立案决定书范文
2015/06/24 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
pytorch实现手写数字图片识别
2021/05/20 Python