@ImZero

Как импортировать переменные с функциями?

python 3.9

Хотел сделать по типу:
В main.py есть определенная функция и переменные, а в файле text.py есть вторая функция которой нужны эти переменные...
И вот мне нужно чтобы из файла main.py импортировались переменные в text.py и в файл main.py возвращался результат...

Я не думаю что сильно понятно, так что вот примеры:
main.py:
from text import text2

a = 1
b = 2
c = 3
d = 4

good = "Good"

def main():
	print("Starting...")
	print(text2())


main()


text.py:
def text2():

	text1 = "Info: "
	from main import good, a, b, c, d

	# text1 = f"{text1} {a} {b} {c} {d}"

	if a == 1:
		text1 = f"{text1} {a}"
	else:
		pass

	if b == 2:
		text1 = f"{text1} {b}"
	else:
		pass

	if c == 3:
		text1 = f"{text1} {c}"
	else:
		pass

	if d == 5:
		text1 = f"{text1} {d}"
	else:
		pass

	text1 = f"{text1}\n{good}"

	return(text1)
  • Вопрос задан
  • 153 просмотра
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Вы должны делать всё наоборот:
Вам надо работать только в модуле main, и в него импортировать в т.ч. функции из других модулей. Тогда импортированным функциям при их вызове из кода main станут доступны необходимые переменные.
Лучше всего делать функции так, чтобы они явно получали в параметрах все необходимые им переменные и явно возвращали все результаты через return. Тогда будет меньше риска, что где-то что-то будет происходить «само собой».
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
если локальные переменные надо объявить глобальными то как-то так

def text2():
    ...
    global good, a, b, c, d
    from main import good, a, b, c, d
    ...


пример

In [7]: x
NameError: name 'x' is not defined

In [8]: def y():
   ...:     global x
   ...:     import math as x
   ...: 

In [10]: y()

In [12]: x
Out[12]: <module 'math' from '/usr/local/Cellar/python@3.9/3.9.15/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload/math.cpython-39-darwin.so'>


а чем не подходит локальный импорт который у вас в примере ?

p.s. хотя конечно использовать глобальные переменные нельзя .
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы