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 回调函数和回调方法的实现分析
Mar 23 Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 Python
python 正确保留多位小数的实例
Jul 16 Python
python障碍式期权定价公式
Jul 19 Python
Django中提供的6种缓存方式详解
Aug 05 Python
Python脚本操作Excel实现批量替换功能
Nov 20 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
Feb 14 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
python网络编程:socketserver的基本使用方法实例分析
Apr 09 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
Python使用Web框架Flask开发项目
Jun 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
DC漫画《蝙蝠侠和猫女》图透 猫女怀孕老爷当爹
2020/04/09 欧美动漫
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
PHP会话处理的10个函数
2015/08/11 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
在javascript中关于节点内容加强
2013/04/11 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
Python基于dom操作xml数据的方法示例
2018/05/12 Python
python实现俄罗斯方块
2018/06/26 Python
python安装twisted的问题解析
2018/08/21 Python
解决Shell执行python文件,传参空格引起的问题
2018/10/30 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python3中列表list合并的四种方法
2019/04/19 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
python接口自动化框架实战
2020/12/23 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
开业庆典答谢词
2014/01/18 职场文书
优良学风班总结材料
2014/02/08 职场文书
建设工程授权委托书
2014/09/22 职场文书
教师个人年终总结
2015/02/11 职场文书
《詹天佑》教学反思
2016/02/20 职场文书