Jump to content

Variável global


zero-cool
 Share

Recommended Posts

Viva,

Estou a tentar usar uma variável global em array, mas não estou a conseguir faze-la passar via import por vários ficheiros.

Exemplificando:

#ficheiro a.py

global varteste
varteste = "aaa"

#ficheiro start.py

import a
import b

print(varteste) # funciona

#ficheiro b.py

print(varteste) # não funciona

Alguém sabe como dar a volta a isto?

Abraço,

Link to comment
Share on other sites

Então o scope não deve permitir, só enviando como parâmetro de entrada para uma função.

Não consigo dar a volta. Como o python usa namespaces, usar variáveis de outra importação não não parece ser possível. No entanto importar novamente não é conveniente, uma vez que essas variáveis que deveriam ser globais já podem ter sido alteradas.

Ando mesmo à volta com isto...

Link to comment
Share on other sites

tirácio, também não funciona. Adicionei

__builtins__['var'] = "ois"

em a.py. O código

print __builtins__.var

Funciona em start.py (onde é feito o import directo) mas dá erro em b.py: AttributeError: 'dict' object has no attribute 'var'

EDIT: não funcionou em b.py por causa de erro de escrita. Só funciona usando

print __builtins__.var
Link to comment
Share on other sites

zero-cool tens que fazer print __builtins__['var']

Exacto. Já reparei. Obrigado. 👍

mas penso que seja uma solução feia :/

Pois... mas o efeito é esse. É exactamente isso que pretendo mas com variáveis criadas por mim. Acumular tudo em builtins não é muito agradável...

Link to comment
Share on other sites

O módulo A tem a variável a. O módulo B tem a variável b. Se tu fizeres, num módulo C:

import A
import B

varModA = A.a
varModB = B.b

Está feito. Se fizeres, no módulo C:

import A

varA = A.a

E num módulo D:

import C

print C.varA

Também funciona. Quando carregas um módulo que importa outros módulos, bibliotecas, whatever, estas são carregadas automaticamente, como se importasses também esses módulos em separado. (At least, nos meus proggies tiro bom partido disso)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.