Actualmente estoy aprendiendo Python, y tengo que trabajar en un proyecto de Python 2.7.accediendo a los vars del "módulo de alcance"
El acceso a las variables de "módulo de alcance" en las funciones del módulo en sí me resulta un poco confuso, y no pude encontrar una manera satisfactoria.
Mis intentos hasta ahora:
Way 1:
my_module.py
my_global_var = None
def my_func():
global my_global_var
my_global_var = 'something_else'
Aquí creo que confusos y VARs locales "ámbito de módulo" pueden ser bastante fácil.
manera 2:
my_module.py
import my_module
my_global_var = None
def my_func():
my_module.my_global_var = 'something_else'
En este caso, el nombre de "mi_módulo" no se podía cambiar tan fácilmente como "modo 1" cuando sea necesario. Además, importar un módulo en sí mismo suena bastante extraño.
¿Qué recomendarías? ¿O sugerirías algo más? Gracias.
No utilice 'Camino 2', usar' 1' Camino. El alcance y alcance de Python son interesantes. El intérprete siempre buscará un nombre del alcance más interno hacia afuera cuando lea el valor de un nombre. Cuando asigna un valor a un nombre, lo hace en el alcance actual.Esto significa que si asigna 'my_global_var' sin la palabra clave' global', su módulo tendrá dos 'my_global_var' diferentes desde el punto de la asignación de ámbito anidado y más allá en el ámbito anidado. La declaración global simplemente le está diciendo al intérprete que asigne valores al ámbito 'global' para el nombre' my_global_var'. – Matt