Почему при импорте второго скрипта, происходит выполнение программы?
Есть два простейших скрипта prover.py:
import gsmgps
#gsmgps.hello()
И gsmgps.py:
print("hello")
Почему при запуске скрипта prover.py он заходит во второй скрипт и выводит print? Ведь файл prover.py закомментирован и я явно не указываю ему выводить что-либо из второго файла?
Ответы (1 шт):
Потому что и при импорте код в скрипте выполняется.
Чтобы не было выполнения кода, при импорте, оберните в условие такой код, например:
if __name__ == "__main__":
print("hello")
Тогда, только при запуске код в if __name__ == "__main__": будет выполняться
PS.
А в случае импортирования файла, у него в __name__ будет его имя без расширения.
Проверить просто:
print(__name__)
PPS.
Это, кст, полезно для скриптов, из которых можно получить переменные/функции/классы и запускать их как самостоятельные единицы.
Например, у нас есть модуль для математических выражений и в нем же мы вызываем их, а чтобы код вызова не выполнился при импортировании обернули в if __name__ == "__main__", calc.py:
def calc(text):
...
if __name__ == "__main__":
print(calc("2+2*2"))
...
И есть другой модуль, что импортирует первый для своих нужд, main.py:
from calc import calc
print(calc("3**9+1"))