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中的jquery PyQuery库使用小结
May 13 Python
用Python解决计数原理问题的方法
Aug 04 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
python下解压缩zip文件并删除文件的实例
Apr 24 Python
python读取LMDB中图像的方法
Jul 02 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
python中的&&及||的实现示例
Aug 07 Python
python各类经纬度转换的实例代码
Aug 08 Python
Python基于requests实现模拟上传文件
Apr 21 Python
运行Python编写的程序方法实例
Oct 21 Python
Python基于execjs运行js过程解析
Nov 27 Python
jupyter 添加不同内核的操作
Feb 06 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
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
firefox中JS读取XML文件
2006/12/21 Javascript
JavaScript 输入框内容格式验证代码
2010/02/11 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
$("").click与onclick的区别示例介绍
2014/09/25 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
python的常见命令注入威胁
2013/02/18 Python
Python greenlet实现原理和使用示例
2014/09/24 Python
python正则表达式match和search用法实例
2015/03/26 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
mac下如何将python2.7改为python3
2018/07/13 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
CSS3教程(7):CSS3嵌入字体
2009/04/02 HTML / CSS
html特殊符号示例 html特殊字符编码对照表
2014/01/14 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
高三自我鉴定怎么写
2013/10/19 职场文书
合伙协议书范本
2014/04/21 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
东京审判观后感
2015/06/01 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
话题作文之诚信
2019/11/28 职场文书
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android