Maison développement back-end Tutoriel 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 了,因为在运行的时候,先执行了一遍这个函数,再通过函数获取了这个变量,这样就会获得新值。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Python implémente le chargement dynamique des pages et l'analyse des fonctions de traitement des requêtes asynchrones pour les applications de collecte de navigateurs sans tête Python implémente le chargement dynamique des pages et l'analyse des fonctions de traitement des requêtes asynchrones pour les applications de collecte de navigateurs sans tête Aug 08, 2023 am 10:16 AM

Python implémente les fonctions de chargement dynamique et de traitement des requêtes asynchrones des applications de collecte de navigateurs sans tête. Dans les robots d'exploration Web, il est parfois nécessaire de collecter le contenu de la page qui utilise le chargement dynamique ou les requêtes asynchrones. Les outils de robots d'exploration traditionnels présentent certaines limitations dans le traitement de ces pages et ne peuvent pas obtenir avec précision le contenu généré par JavaScript sur la page. L'utilisation d'un navigateur sans tête peut résoudre ce problème. Cet article explique comment utiliser Python pour implémenter un navigateur sans tête afin de collecter le contenu des pages à l'aide du chargement dynamique et des requêtes asynchrones.

Comment gérer le chargement et la commutation dynamiques des composants dans Vue Comment gérer le chargement et la commutation dynamiques des composants dans Vue Oct 15, 2023 pm 04:34 PM

Gestion du chargement et du changement dynamiques de composants dans Vue Vue est un framework JavaScript populaire qui fournit une variété de fonctions flexibles pour gérer le chargement et le changement dynamiques de composants. Dans cet article, nous discuterons de certaines méthodes de gestion du chargement et de la commutation dynamiques des composants dans Vue et fournirons des exemples de code spécifiques. Le chargement dynamique de composants signifie le chargement dynamique de composants au moment de l'exécution, selon les besoins. Cela améliore les performances et la vitesse de chargement de votre application car les composants pertinents ne sont chargés qu'en cas de besoin. Vue fournit async et awa

Révéler le principe de la mise à jour à chaud dans Golang : explication privilégiée du chargement et du rechargement dynamiques Révéler le principe de la mise à jour à chaud dans Golang : explication privilégiée du chargement et du rechargement dynamiques Jan 20, 2024 am 10:09 AM

Explorer le principe de Golang Hot Update : Le mystère du chargement et du rechargement dynamiques Introduction : Dans le domaine du développement logiciel, les programmeurs espèrent souvent pouvoir modifier et mettre à jour le code sans redémarrer l'application. De telles exigences sont d’une grande importance tant pour l’efficacité du développement que pour la fiabilité du fonctionnement du système. En tant que langage de programmation moderne, Golang fournit aux développeurs de nombreux mécanismes pratiques pour implémenter des mises à jour à chaud. Cet article approfondira les principes de la mise à jour à chaud de Golang, en particulier les mystères du chargement et du rechargement dynamiques, et le combinera avec des exemples de code spécifiques.

Comment créer une table qui charge dynamiquement des données à l'aide de Vue et Element-UI Comment créer une table qui charge dynamiquement des données à l'aide de Vue et Element-UI Jul 21, 2023 pm 11:49 PM

Comment utiliser Vue et Element-UI pour créer une table qui charge dynamiquement des données dans le développement Web moderne, les tables de données sont l'un des composants d'interface courants. Vue.js est un framework frontal très populaire de nos jours, et Element-UI est un ensemble de bibliothèques de composants développées sur la base de Vue.js, qui fournit un riche ensemble de composants d'interface utilisateur que nous pouvons utiliser. Cet article expliquera comment utiliser Vue et Element-UI pour créer une table capable de charger dynamiquement des données et donnera des exemples de code correspondants. Tout d'abord, nous devons installer

Résoudre l'erreur Vue : impossible d'utiliser correctement Vue Router pour charger dynamiquement des composants en fonction des paramètres de routage Résoudre l'erreur Vue : impossible d'utiliser correctement Vue Router pour charger dynamiquement des composants en fonction des paramètres de routage Aug 20, 2023 am 08:09 AM

Résoudre l'erreur Vue : impossible d'utiliser correctement VueRouter pour charger dynamiquement des composants en fonction des paramètres de routage. Lors du processus d'utilisation de VueRouter pour les sauts de routage, nous devons parfois charger dynamiquement des composants en fonction des paramètres de routage. Cependant, dans certains cas, nous pouvons rencontrer une erreur courante : impossible d'utiliser correctement VueRouter pour charger dynamiquement des composants en fonction des paramètres de routage. Cet article décrit comment résoudre cette erreur et fournit des exemples de code. Tout d’abord, nous devons être clairs : VueRouter peut passer

Comment utiliser la réflexion et charger dynamiquement des assemblys en C# Comment utiliser la réflexion et charger dynamiquement des assemblys en C# Oct 08, 2023 pm 12:12 PM

Comment utiliser la réflexion et charger dynamiquement des assemblys en C# Introduction : En C#, la réflexion (Reflection) est un mécanisme puissant qui nous permet d'obtenir et d'exploiter les métadonnées du programme au moment de l'exécution, y compris les informations de type, les informations sur les membres, etc. Le chargement dynamique d'assemblys est une application courante implémentée par réflexion et s'avère très utile dans certains scénarios spécifiques. Cet article présentera en détail comment utiliser la réflexion et charger dynamiquement des assemblys en C#, et fournira des exemples de code spécifiques. Le concept de base de la réflexion La réflexion est une fonction importante du langage C#

Conseils pratiques de phpSpider : Comment gérer le chargement dynamique du contenu web ? Conseils pratiques de phpSpider : Comment gérer le chargement dynamique du contenu web ? Jul 22, 2023 am 08:33 AM

Conseils pratiques de phpSpider : Comment gérer le chargement dynamique du contenu web ? Lors de l'exploration des données d'une page Web, nous rencontrons souvent le problème selon lequel le contenu chargé dynamiquement ne peut pas être obtenu directement via le robot d'exploration. Ces contenus chargés dynamiquement peuvent être des données obtenues via des requêtes AJAX, des éléments DOM rendus via JavaScript, etc. Afin de résoudre ce problème, cet article présentera quelques conseils pratiques pour gérer les problèmes de chargement dynamique des pages Web lors de l'utilisation de phpSpider. 1. Utilisez les outils de débogage réseau pour rechercher des URL chargées dynamiquement

Utilisez la méthode load() de la classe System en Java pour charger dynamiquement des classes ou des ressources Utilisez la méthode load() de la classe System en Java pour charger dynamiquement des classes ou des ressources Jul 25, 2023 am 10:25 AM

Java utilise la méthode load() de la classe System pour charger dynamiquement des classes ou des ressources. Dans le développement Java, nous devons parfois charger dynamiquement des classes ou des ressources pendant l'exécution du programme pour obtenir certaines fonctions flexibles. Java fournit la méthode load() de la classe System pour répondre à cette exigence. Cet article présentera l'utilisation de la méthode load() de la classe System et fournira des exemples de code correspondants. Tout d’abord, comprenons la définition de la méthode load() : publicstaticvo

See all articles