|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
||||||||||||||||
Импорт функции из другого файла19.02.2020, 14:18. Показов 15856. Ответов 21
Метки нет (Все метки)
Есть два файла .py
В одном основная программа для старта окна, из другого хочу взять функцию в основной импортирую таким образом:
0
|
||||||||||||||||
| 19.02.2020, 14:18 | |
|
Ответы с готовыми решениями:
21
Импорт данных из другого файла |
|
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
|
|
| 19.02.2020, 14:24 | |
|
а import * не пробовали?
0
|
|
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
|
| 19.02.2020, 14:26 [ТС] | |
|
0
|
|
|
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
|
|
| 19.02.2020, 14:30 | |
|
а можно полный код обоих файлов?
0
|
|
|
|
|
| 19.02.2020, 14:37 | |
|
Циклический импорт. Не делай так. Это геморрой.
Файлы не должны зависеть друг от друга. Зависимость должна быть односторонняя.
1
|
|
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
||||||||||||
| 20.02.2020, 11:24 [ТС] | ||||||||||||
и файл в котором хранится эта функция
0
|
||||||||||||
|
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
|
|||||||
| 20.02.2020, 19:22 | |||||||
![]()
0
|
|||||||
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
|||||||
| 21.02.2020, 10:37 [ТС] | |||||||
|
Не работает оно так, + остальные функции из основного файла нормально вызываются и без ()
0
|
|||||||
| 21.02.2020, 12:22 | |
|
KAPATEJlb, Для начала научитесь правильной терминологии, что бы было понятно о чем Вы говорите. Файл с программой которую вы изначально запускаете Лутц называет "сценарием", а все другие программные файлы называются модулями. Сам Python файлу, который вы запускаете автоматически присваивает имя '__main__'. Поэтому что бы Вас понять, называйте файл который вы запускаете Сценарий "Имя" или Основной (как Вы и назвали), но с указанием "Имени" файла. При импорте указывайте откуда загружаете Основной "имя" или если из модуля, то Модуль "Имя", дальше что он импортирует Модуль "Имя".
0
|
|
|
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
|
|
| 21.02.2020, 12:28 | |
|
Зачем такой круговорот делать? Если вы хотите использовать параметры в функции, так и напишите какие аргументы надо передать в нее, а не импортируйте их
0
|
|
| 21.02.2020, 12:31 | ||
|
KAPATEJlb, Так как я не понял какая у Вас взаимосвязь файлов, то не могу сказать правильная ли она, но если у Вас действительно существует зацикленность файлов, то это одна из причин возникновения ошибки.
0
|
||
|
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
|
||||||||||||||||
| 21.02.2020, 12:33 | ||||||||||||||||
А это удалить
0
|
||||||||||||||||
| 21.02.2020, 13:25 | ||||||
|
KAPATEJlb, Еще, что бы было понятнее что, куда импортируется, первой строкой в качестве комментария указывайте имя файла, в котором размещается код написанный ниже.То есть в файле funcED.py первой строчкой должна быть
# файл funcED.py То, что я Вам рекомендую, не обязательно, но облегчает понимания Вашего кода другими, но и Вами тоже, когда вы вернетесь к нему через продолжительный промежуток времени и уже забудете его содержание. Добавлено через 13 минут KAPATEJlb, На конец я вроде понял, что Вы делаете. Вы в Основной файл start импортируете функцию poisk из модуля funcED , и при этом в модуль funcED импортируете аргументы для функции из основного файла start. Это показывает, что Вы не понимаете как работает импорт в Python. Сейчас попытаюсь Вам объяснить. Добавлено через 27 минут KAPATEJlb, Когда Вы запускаете сценарий, то в оперативной памяти создается пространство имен (имен переменных, которые создаются в данном сценарии и доступны в этом сценарии как для чтения, так и для записи). Когда при импорте Вы используете синтаксис from "Имя модуля" import "Имя переменной", ... то из модуля копируются указанные имена переменных, которые на самом деле являются ссылками на любые объекты питона, включая и функции. Все копируемые имена помещаются в пространство имен основного сценария (точнее того файла, куда происходит импортирование). Именно по этой причине нужно следить, что бы не было одинаковых имен в том файле откуда импортируется с тем куда импортируется. Но после такого импорта, Вы получаете единое пространство имен, объединяющее объекты из обоих файлов. Поэтому функция poisk уже будет находится в пространстве имен основного файла start и поэтому не нужно импортировать данные из файла start в файл funcED , что бы использовать в этой функции ( она уже находится в расширенном пространстве имен для файла start ). Поэтому импортирование данных из файла start в файл funcED
Получилось громоздко, не знаю поняли ли Вы. Что не понятно, спрашивайте.
1
|
||||||
|
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
|
|
| 21.02.2020, 14:50 | |
|
Viktorrus, само собой, я думал это очевидно
0
|
|
| 21.02.2020, 16:31 | |
|
KAPATEJlb, По другому обстоит дело, если бы для импорта использовался синтаксис import "имя файла". В этом случае создается пространство имен импортируемого модуля, которое не пересекается с пространством имен основного модуля. Вот в этом случае может понадобиться передача данных из пространства имен основного файла в пространство имен импортируемого модуля. Но делается это не импортом основного файла, а с помощью аргументов функции или с помощью инструкции присваивания в основном модуле, которая присваивает значение из основного файла, переменной в пространстве имен модуля.
"имя модуля.переменная модуля = объект основного файла". Но так как у Вас такой синтаксис импорта не используется, то углубляться в его объяснение не буду.
0
|
|
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
||||||||
| 22.02.2020, 11:20 [ТС] | ||||||||
|
я все прочитал, действительно интересно, и вроде что-то для себя понял.
Пример: в файле start.py содержится переменна
0
|
||||||||
|
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
|
|
| 22.02.2020, 12:45 | |
|
Смотрите какой тип данных передаете
0
|
|
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
|
| 22.02.2020, 13:29 [ТС] | |
|
0
|
|
|
|
|||
| 22.02.2020, 13:39 | |||
|
Добавлено через 2 минуты Методу .connect нужно передавать функцию, а не ее результат.
0
|
|||
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
|||
| 23.02.2020, 11:28 [ТС] | |||
|
я ж спрашиваю не от чего оно не работает,а что нужно чтобы заработало. А то как учителя в школе, "здесь неправильно, а как правильно я тебе не скажу"
0
|
|||
| 23.02.2020, 11:28 | |
|
Помогаю со студенческими работами здесь
20
Js функции из другого js файла Вызов функции из другого файла Подключение функции из другого файла
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|