Невозможно импортировать функцию из модуля - PullRequest
0 голосов
/ 10 февраля 2019

В основном у меня есть 3 модуля, которые взаимодействуют друг с другом и импортируют функции друг друга.Я пытаюсь импортировать функцию из моего модуля shigui.py, которая создает графический интерфейс для программы.Теперь у меня есть функция, которая получает значения пользовательских записей в графическом интерфейсе, и я хочу передать их другому модулю.Я пытаюсь передать функцию ниже:
def valueget(): keywords = kw.get() delay = dlay.get() category = catg.get()

Все операции импорта выполняются нормально, пока я не попытаюсь импортировать эту функцию с
from shigui import valueget в другой модуль, который будет использовать значения,На самом деле, я не могу импортировать какую-либо функцию в любой модуль из этого файла.Также я должен добавить, что они находятся в одном каталоге.Я благодарен за любую помощь в этом вопросе.

1 Ответ

0 голосов
/ 10 февраля 2019

Ну, я не совсем уверен, что импортирует что, но вот что я могу вам сказать.Python может иногда допускать циклические зависимости.Однако это зависит от того, какова структура ваших зависимостей.Прежде всего, я бы сказал, посмотрите, есть ли способ избежать этого (реструктуризация кода и т. Д.).Если это неизбежно, есть одна вещь, которую вы можете попробовать.Когда Python импортирует модули, он делает это в порядке выполнения кода.Это означает, что если у вас есть определение перед импортом, вы можете иногда получить доступ к определению в первом модуле, импортировав этот первый модуль во второй модуль.Позвольте мне привести пример.Предположим, у вас есть два модуля, A и B.

A:

def someFunc():
    # use B's functionality from before B's import of A
    pass

import B

B:

def otherFunc():
    # use A's functionality from before A's import of B
    pass

import A

В такой ситуации Python разрешит это.Однако все после импорта не всегда является честной игрой, поэтому будьте осторожныВы можете прочитать больше о модульной системе Python, если хотите знать, почему это работает.

Полезная, но не полная ссылка: https://docs.python.org/3/tutorial/modules.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...