首页 后端开发 Python教程 python动态加载变量示例分享

python动态加载变量示例分享

Jun 16, 2016 am 08:45 AM
动态加载

众所周知,程序在启动后,各个程序文件都会被加载到内存中,这样如果程序文本再次变化,对当前程序的运行没有影响,这对程序是一种保护。

但是,对于像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 了,因为在运行的时候,先执行了一遍这个函数,再通过函数获取了这个变量,这样就会获得新值。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Python实现无头浏览器采集应用的页面动态加载与异步请求处理功能解析 Python实现无头浏览器采集应用的页面动态加载与异步请求处理功能解析 Aug 08, 2023 am 10:16 AM

Python实现无头浏览器采集应用的页面动态加载与异步请求处理功能解析在网络爬虫中,有时候需要采集使用了动态加载或者异步请求的页面内容。传统的爬虫工具对于这类页面的处理存在一定的局限性,无法准确获取到页面上通过JavaScript生成的内容。而使用无头浏览器则可以解决这个问题。本文将介绍如何使用Python实现无头浏览器来采集使用动态加载与异步请求的页面内容

Vue中如何处理组件的动态加载和切换 Vue中如何处理组件的动态加载和切换 Oct 15, 2023 pm 04:34 PM

Vue中处理组件的动态加载和切换Vue是一个流行的JavaScript框架,它提供了各种灵活的功能来处理组件的动态加载和切换。在本文中,我们将讨论一些Vue中处理组件动态加载和切换的方法,并提供具体的代码示例。动态加载组件是指根据需要在运行时动态加载组件。这样可以提高应用程序的性能和加载速度,因为只有当需要时才会加载相关的组件。Vue提供了async和awa

揭秘Golang热更新原理:动态加载与重载的内幕讲解 揭秘Golang热更新原理:动态加载与重载的内幕讲解 Jan 20, 2024 am 10:09 AM

Golang热更新原理探究:动态加载与重载的奥秘引言:在软件开发领域,程序员们经常希望能够在不重启应用的情况下进行代码修改和更新。这样的需求对于开发效率和系统运行的可靠性都具有重要意义。而Golang作为一门现代化的编程语言,为开发者提供了许多便捷的机制来实现热更新。本文将深入探讨Golang热更新的原理,特别是动态加载和重载的奥秘,并将结合具体的代码示例进

如何使用Vue和Element-UI创建动态加载数据的表格 如何使用Vue和Element-UI创建动态加载数据的表格 Jul 21, 2023 pm 11:49 PM

如何使用Vue和Element-UI创建动态加载数据的表格在现代的Web开发中,数据表格是常见的界面组件之一。Vue.js是当下非常流行的前端框架,而Element-UI是基于Vue.js开发的一套组件库,提供了丰富的UI组件供我们使用。本文将介绍如何使用Vue和Element-UI来创建一个可以动态加载数据的表格,并且给出相应的代码示例。首先,我们需要安装

解决Vue报错:无法正确使用Vue Router根据路由参数动态加载组件 解决Vue报错:无法正确使用Vue Router根据路由参数动态加载组件 Aug 20, 2023 am 08:09 AM

解决Vue报错:无法正确使用VueRouter根据路由参数动态加载组件在使用VueRouter进行路由跳转的过程中,有时我们需要根据路由参数动态加载组件。但是,有些情况下,我们可能会遇到一个常见的错误:无法正确使用VueRouter根据路由参数动态加载组件。本文将介绍如何解决这个报错,并提供代码示例。首先,我们需要明确一点:VueRouter可以通过

C#中如何使用反射和动态加载程序集 C#中如何使用反射和动态加载程序集 Oct 08, 2023 pm 12:12 PM

C#中如何使用反射和动态加载程序集引言:在C#中,反射(Reflection)是一种强大的机制,它允许我们在运行时获取和操作程序的元数据,包括类型信息、成员信息等。而动态加载程序集则是通过反射来实现的一种常见应用,并且在一些特定场景中非常有用。本文将详细介绍C#中如何使用反射和动态加载程序集,并提供具体的代码示例。反射的基本概念反射是C#语言中的一项重要功能

phpSpider实用技巧:如何处理网页内容的动态加载问题? phpSpider实用技巧:如何处理网页内容的动态加载问题? Jul 22, 2023 am 08:33 AM

phpSpider实用技巧:如何处理网页内容的动态加载问题?在爬取网页数据时,经常会遇到动态加载的内容无法直接通过爬虫获取的问题。这些动态加载的内容可以是通过AJAX请求获取的数据、通过JavaScript进行渲染的DOM元素等。为了解决这个问题,本文将介绍一些在使用phpSpider时处理网页动态加载问题的实用技巧。一、使用网络调试工具查找动态加载的URL

Java中使用System类的load()方法动态加载类或资源 Java中使用System类的load()方法动态加载类或资源 Jul 25, 2023 am 10:25 AM

Java中使用System类的load()方法动态加载类或资源在Java的开发中,有时候我们需要在程序运行时动态地加载类或资源,以实现一些灵活的功能。Java提供了System类的load()方法来实现这个需求。本文将介绍System类的load()方法的使用,并提供相应的代码示例。首先,我们来了解一下load()方法的定义:publicstaticvo

See all articles