To działa zgodnie z oczekiwaniamiDlaczego nie mogę użyć `import *` w funkcji?
def outer_func():
from time import *
print time()
outer_func()
mogę definiować funkcje zagnieżdżone w grzywny kontekstowego i nazywają je od innych zagnieżdżonych funkcji:
def outer_func():
def time():
return '123456'
def inner_func():
print time()
inner_func()
outer_func()
mogę nawet importować poszczególne funkcje:
def outer_func():
from time import time
def inner_func():
print time()
inner_func()
outer_func()
To jednak rzuca SyntaxError: import * is not allowed in function 'outer_func' because it contains a nested function with free variables
:
def outer_func():
from time import *
def inner_func():
print time()
inner_func()
outer_func()
Mam świadomość, że to nie jest najlepsza praktyka, ale dlaczego to nie działa?
ciekawe pytanie ... – mgilson
"Działa to zgodnie z oczekiwaniami" - w jakiej wersji python? – georg
@ thg435 Python 2. Python 3 jest bardziej rygorystyczny i odrzuca pierwszy przykład z 'SyntaxError: import * dozwolony tylko na poziomie modułu'. Dodałem tag python-2.x, aby wyjaśnić. –