хотите использовать переменную в этом файле, а не в файле импорта

#python #import #global-variables

Вопрос:

Эй, ребята, вот проблема, с которой я столкнулся в своем проекте. Здесь я использую простой пример, чтобы объяснить это. Когда я пытаюсь запустить main.py, Я хочу использовать переменную в этом модуле не во вспомогательном, но результат вывода всегда равен 2, даже когда я удаляю глобальную переменную «a». Есть ли какой-нибудь способ без ввода аргумента функции? Надеюсь, кто-нибудь сможет помочь 🙁

helper.py

 a = 2
def test():
   print(a)

 

main.py

 from helper import *

del globals()["a"]
if __init__ == "__main__":
    a = 10
    test()

 

Ответ №1:

Вы можете просто изменить атрибут:

main.py

 import helper

if __name__ == "__main__":
    helper.a = 10
    helper.test()
 

Выход:

 10
 

Редактировать:

Вы могли бы попробовать:

helper.py

 a = [2]
def test():
   print(a[0])
 

main.py

 from helper import *

if __name__ == "__main__":
    a.clear()
    a.append(10)
    test()
 

Выход:

 10
 

Комментарии:

1. Есть ли способ обойтись без передачи аргумента

2. @YanJimmy отредактировал мой ответ, проверьте его, помните, что делать, если это поможет

3. Спасибо за ваш ответ! Еще один вопрос. Поскольку в моем проекте есть много функций и переменных, которые я хочу использовать, вот почему я пишу из вспомогательного импорта *. Мой вопрос в том, что если я хочу изменить только часть глобальной переменной, могу ли я все еще использовать вспомогательный импорт * ?

4. @YanJimmy Вы можете делать и то, и другое, вы можете делать import helper и то from helper import * , и другое, не забудьте принять и проголосовать, если это поможет 😛

5. @YanJimmy Мои решения-единственно возможные пути