Mam funkcję, którą wywołuję z modułu. W ramach tej funkcji dwie zmienne, do których próbuję uzyskać dostęp, stają się globalne. Gdy uruchomię moduł w IDLE sam, nadal będę mógł uzyskać dostęp do zmiennych po zakończeniu funkcji, zgodnie z oczekiwaniami. Kiedy zadzwonię do funkcji w kodzie, który zaimportowałem moduł do I nie mogę uzyskać dostępu do zmiennych.Uzyskiwanie dostępu do zmiennych globalnych z funkcji importowanego modułu
#module to be imported
def globaltest():
global name
global age
name = str(raw_input("What is your name? "))
age = int(raw_input("What is your age? "))
Wyjście po uruchomieniu go samodzielnie.
>>> globaltest()
What is your name? tom
What is your age? 16
>>> name
'tom'
>>> age
16
I kod, w którym należy go zaimportować.
import name_age
name_age.globaltest()
ale po uruchomieniu próbuję uzyskać dostęp do zmiennych w kodzie, w którym go zaimportowałem.
What is your name? tom
What is your age? 16
>>> name
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
name
NameError: name 'name' is not defined
>>>
Jak mogę sprawić, że zmienna globalna w kodzie gdzie mam importowanego modułu lub dostępu do „name” lub zmiennych „wiek” w funkcji.
gwiazdowe import są tak zła jak globalnych. @badathings: _dont_ zrób to. –
@bruno desthuilliers: ok, dzięki. –
Od [PEP8] (http://legacy.python.org/dev/peps/pep-0008/#imports) * "Należy unikać importu symboli wieloznacznych (z import *), ponieważ sprawiają one, że nie jest jasne, które nazwy są obecne w przestrzeni nazw, myląc zarówno czytniki, jak i wiele zautomatyzowanych narzędzi ... "* –
SiHa