Istnieją dwa pliki PY. util.py

def add_sum():
    print(x + 3)

test.py

from util import *
x=3
add_sum()

Kiedy biegam test.py, otrzymuję błąd:

Traceback (most recent call last):
File "test.py", line 45, in <module>
    add_sum()
File "util.py", line 10, in add_sum
    print(x + 3)
NameError: name 'x' is not defined

Zmienna x jest globalna, dlaczego funkcja nie może osiągnąć x i podnieść błąd?

0
tranquil.coder 12 marzec 2020, 11:15

1 odpowiedź

Najlepsza odpowiedź

"Globals" Pythona są tylko globalami do modułu, w których są zdefiniowane. To jest w ramach projektu - powinieneś stosować tylko Globals, gdy naprawdę nie można ich uniknąć, ponieważ sprawia, że kod trudniej jest zrozumieć, testować i utrzymać.

W twoim przypadku właściwy sposób jest wyraźnie przejść x do Twojej funkcji:

 # util.py
 def add_sum(x):
     return x + 3

I

# test.py
# NB: star imports are evil too, for the very same reasons
from util import add_sum
x=3
print(add_sum(x))
2
bruno desthuilliers 12 marzec 2020, 08:38