Почему моя функция python3 работает без вызова?

Использование python3.8 в macOS

У меня есть функция с циклом while внутри, и я также импортирую два других файла .py из того же каталога, которые содержат нужные мне функции.

import Scraper
import Creator

def main(index=1):
    operation = True
    while operation == True:
        try:
            Scraper.scraper()
            Creator.Auto(index)

        except Exception as e:
            print(e)
            operation = False

    return

Без вызова main(), если я запущу свою программу, она все равно запустит функцию main(). Это также происходит, когда я вызываю main(), программа затем запускается с использованием цикла while, но только после выполнения функции один раз до начала цикла while. (т.е. функция запустится на один раз больше, чем ожидалось)

Я не сталкивался с такой проблемой раньше. Любые советы по исправлению этого?

У вас есть код внутри двух других файлов, который не находится внутри функции?

Nick ODell 21.02.2023 21:35

Ничто стандартное не будет выполняться main автоматически. Если вам не нужны операторы import для воспроизведения проблемы, избавьтесь от них и объясните, как именно вы выполняете скрипт. Если вам нужны один или оба оператора import, содержимое импортируемых модулей имеет значение.

chepner 21.02.2023 21:36

Можете ли вы показать код из Scraper и Creator (при условии, что это то, что вы сделали). Если они вызовут main в этом файле py, это может привести к этому

Buzzkillionair 21.02.2023 21:36

Возможно ли, что у вас есть такой код в одном из этих двух импортов?: if __name__ == "__main__": main()

Joao Luiz Cadore 21.02.2023 21:38

Функция traceback.print_stack печатает текущую трассировку стека. Если вы назовете это main, вы увидите, что называется main.

Michael Butscher 21.02.2023 21:41

@chepner, я считаю, что ты в корне проблемы. Я, на самом деле, просто идиот. Оба файла импорта вызывают функции из соответствующих файлов. Всякий раз, когда я импортирую оба модуля в этот main.py, также будут вызываться любые вызовы функций из модулей.

Gablo Ficazzo 21.02.2023 21:51

Чтобы ответить на ваш вопрос, нам нужно увидеть содержимое Scraper.py и Creator.py

Paul M. 21.02.2023 21:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
7
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте проверить другие файлы .py. Однажды у меня была такая же проблема, когда другие мои файлы .py содержали вызовы функций. Когда вы импортируете файл .py и он содержит вызов функции, эта функция может быть вызвана автоматически.

Другие вопросы по теме