Как вы, наверное, знаете, Python является языком сценариев, поэтому выполнение программы начнется с самого начала вашего исходного файла и продолжится до самого конца.
Поэтому, если вы выполните файл mycode.py
с помощью команды python mycode.py
, выполнение начнется с самой верхней части исходного файла mycode.py
Однако этот подход приносит несколько проблем в больших приложениях. Обычно первые команды, которые вы запускаете, это import, который в основном выбирает какой-то другой файл Python и выполняет код внутри in. Так что в качестве практического примера, скажем, у вас есть 2 файла first.py
и second.py
. first.py
начинается следующим образом:
import second
и second
начинаются следующим образом:
def a_function():
# do something
затем Python видит команду импорта, запускает second.py
и инициализирует функцию a_function()
, так что теперь она доступна в first.py
Однако second.py
может также содержать код, который должен быть выполнен сразу же после запуска интерпретатора в файле, например:
def a_function():
# do something
print("I am called upon execution")
Теперь у нас есть проблема: оператор print будет выполняться, когда first.py
import second.py
.
Чтобы обойти это, используется следующая мера ОСОБЕННО В ФАЙЛАХ, КОТОРЫЕ СЛЕДУЮТ ДЛЯ БУДУЩЕГО ИМПОРТА:
def a_function():
# do something
if __name__ == "__main__":
print("I am executed")
Это НЕ похоже на точку входа C (int main(){...}
). Фактически, компилятор C ищет точку входа, чтобы начать выполнение в заданной точке кода.
Интерпретированный Pyhton insted просто выполняет проверку предопределенного глобала (__name__
). Если переменная равна "__main__"
, это очень общее объяснение, это означает, что файл выполняется, в противном случае файл импортируется (поэтому проверка завершается неудачно и код не выполняется).
Так что в вашем случае просто определите вашу функцию (def remove_green_background():
) и назовите ее первым в исходном файле (в основном, первая команда без отступа)