Python совместное использование функций при импорте - PullRequest
0 голосов
/ 06 августа 2020

У меня есть такая файловая структура:

MyProgram
  run.py
  log.py
  texts.py

# run.py
   import texts
   import log

# texts.py
   error_msg = "this is an error message"
   warning_msg = "this is a warning message"

# log.py
   print(error_msg)

возможно ли каким-то образом получить доступ к переменной, которая находится в другом файле, без дополнительного импорта?

Так что я не хотите импортировать texts.py в log.py, единственное соединение между этими двумя файлами - run.py

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Боюсь, что это невозможно. Почему это так плохо? В Python не имеет значения, импортируете ли вы модуль один или 20 раз, python сам при загрузке модуля всегда сначала проверяет sys.modules, если вы импортировали его, прежде чем он будет найден. Итак, в заключение, помимо бесполезной траты места, многократный импорт одного и того же модуля вообще не влияет на ваш код.

Для получения более подробной информации вы можете найти что-то здесь: https://docs.python.org/3/reference/import.html

Чтобы весь импорт был за один импорт, создайте пакет Python, а затем импортируйте пакет python. Сам по себе пакет Python - это не более чем Папка, в которой у вас есть модули, и файл __init__.py, в котором вы указываете, какие модули Пакет также должен разрешить доступ.

Пример структуры вашей Папки:

->Classes
   -> log
   -> texts
   -> __init__.py
0 голосов
/ 06 августа 2020

В вашем случае вам действительно не нужен файл log.py. Просто импортируйте файлtext.py в run.py и распечатайте то, что вы хотите

from texts import *

print(error_msg)

Но если вы хотите иметь все три файла, вы должны использовать oop

run.py

from texts import *
from log import *

ermsg(error_msg)

log.py

def ermsg(msg):
    print(msg)

text.py

error_msg = "this is an error message"
warning_msg = "this is a warning message"
...