je poste cette réponse mais je Je ne suis pas vraiment sûr si j'ai compris votre question. Vous avez parlé de cette question: Global Variable from a different file Python
Cependant, je crois que je ne reçois pas une sortie de la file.foo
variables car foo
n'est pas explicitement défini dans file.py
. foo
est un tableau de matrices créées à partir d'un fichier readfile.
Vous avez parlé de file.foo
ne pas explicitement défini dans file
. Ce que je comprends de votre déclaration est que, foo
vit dans un autre objet qui vit dans le module file
. Ainsi, afin d'obtenir foo
vous devez chercher à travers cet objet:
import file
file.object.foo
ou:
import file *
object.foo
file.py
ajoute les valeurs de la readfile à foo
ainsi file.py
doit fonctionner de façon indépendante à définir foo
.
Vous essentiellement importer file
module afin d'ajouter les valeurs de la readfile. Par conséquent, au sein de file
vous devez ouvrir le fichier readfile pour ajouter ses valeurs à foo
qui est fondamentalement un objet de file
: file.foo
.
J'espère juste que j'ai obtenu ce que vous demandez.
Edit:
Supposons que le code affiché est dans un fichier module appelé file
:
color_matrices = Full_Layout(array=org_arr, resolution=1)
def Globalize_RPF():
global color_matrices
color_matrices
est globale car elle est attribuée au plus haut niveau du module. Cette déclaration global color_matrices
dans la fonction Globalize_RPF
déclarera que vous avez l'intention de changer la variable globale color_matrices
:
def Globalize_RPF():
color_matrices = Full_Layout(array=org_arr, resolution=1) # Local to function, you cannot use `file.foo` after importing `file` module
Lorsque attribué cette façon, color_matrices
est locale à la fonction. Qu'est-ce que ça veut dire? Cela signifie que la variable ne sera pas accessible en dehors de la fonction. Donc, même si vous essayez d'utiliser color_matrices
après la fonction dans le module file
, cela ne fonctionnera pas.
color_matrices = Full_Layout(array=org_arr, resolution=1) # Top-level assignment, global var
def Globalize_RPF():
# process color_matrices
maintenant color_matrices
est une variable globale, c'est vous pouvez l'utiliser à l'intérieur file
module dans les fonctions, les classes, dans les expressions et beaucoup d'autres endroits, vous pouvez référencer la variable partout dans file
parce que son désormais mondiale. Parce que color_matrices
est mondiale maintenant et non une variable locale dans une fonction, nous pouvons obtenir sa valeur en important file
comme ce qui suit:
from file import color_matrices
RPF = color_matrices
print(RPF)
Si vous devez réassigner color_matrices
à de nouveaux résultats dans la fonction, utilisez global
mot-clé:
def Globalize_RPF():
global color_matrices
color_matrices = ... # Changes global color_matrices
Si vous utilisez uniquement color_matrices = ...
à l'intérieur du corps de la fonction vous simplement créer color_matrices
qui est à la fonction locale et vous ombre/override color_matrices
de la portée mondiale, celui qui est affecté au sommet de th Le module
Alors peut-être que c'est le problème: foo ne vit pas dans un objet dans le module de fichiers. Il s'agit simplement d'une variable définie par une fonction personnalisée qui analyse le fichier readfile. Ainsi, lorsque je tente d'imprimer (fichier.foo) dans mon fichier pyfile actuel, rien n'est renvoyé. Avoir peut-être vivre dans un objet est la solution? Je ne suis pas un expert en python donc je ne suis pas sûr de savoir comment faire ça. –
Ok, puisque 'foo' est une variable locale dans une fonction, elle est accessible par cette fonction et toutes les fonctions englobantes s'il y en a. Afin de rendre 'foo' accessible lorsque vous qualifiez son nom via le nom du module:' file.foo', vous devez déplacer l'affectation vers la portée globale. Soit vous déclarez globalement 'foo' dans la fonction comme:' global foo' et ensuite vous affectez toutes les valeurs à 'foo':' foo = ... 'dans la fonction ou vous déplacez l'affectation de' foo' en dehors de la fonction fonction, au niveau supérieur du module. – direprobs
s'il vous plaît voir modifier, je ne sais pas ce que je fais –