Ім’я сценарію або модуля Python, що зараз виконується, зберігається в спеціальній змінній __name__ Python. У Python 3.0 з’явилася змінна __name__, якої немає в Python 2.x. Поточне значення сценарію або модуля Python, __main__, призначається змінній __name__ під час його виконання.
Що означає _name_ ?
Python має вбудовану змінну під назвою __name__, яка зберігає назву сценарію або модуля, який зараз виконується. Ім’я сценарію або модуля зберігається в змінній __name__, якщо поточний модуль не запущено, у цьому випадку йому присвоюється значення __main__.
Отже, коли виконується сценарій Python, значення його змінної __name__ завжди має бути __main__, якщо її імпортовано в інший сценарій Python. Якщо ні, з’явиться назва модуля.
приклад:
Щоб краще зрозуміти це, скористаємося прикладом. Зробити сценарій на Python під назвою testing.py, і додайте до нього наступний код:
# Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything()
Вихід:
як змінити рядок на int
Value of the __name__ : __main__
Пояснення:
Сценарій запускається одразу як основна програма, як вказано у виводі «Значення назви: main». У Python значення змінної сценарію __name__ автоматично встановлюється на '__main__', коли сценарій виконується безпосередньо. Цей результат підтверджує, що сценарій виконується безпосередньо, а не імпортується як модуль до іншого сценарію
Давайте тепер створимо інший сценарій Python під назвою mains.py і імпортувати в нього попередній.
приклад:
# importing testing.py import testing testing.anything()
Вихід:
Value of the __name__ : testing
Пояснення:
тестування. Anything() — це метод, який запускається, коли сценарій testing.py імпортується в інший сценарій Python за допомогою тестування імпорту. У цій ситуації ім’я модуля, у цьому випадку «testing», встановлено як значення змінної __name__ у testing.py, а не як «__main__». З цієї причини вихід тестування. Anything() є 'значенням __name__: тестування.' Це ілюструє, як запуск сценарію безпосередньо проти імпортування його як модуля впливає на значення змінної __name__.
Використання умови if name == main :
Ми використовуємо оператор if і стан __name__ == __main__ щоб заявити про це певний код Python має бути тільки виконується під час безпосереднього запуску сценарію .
приклад:
# importing testing.py import testing if __name__ == __main__: testing.anything()
У цьому випадку здатність поточного модуля або сценарію працювати незалежно перевіряється за допомогою рядка __main__. Щоб вказати інтерпретатору Python, що ключове слово в змінній __name__ є зарезервованим або спеціальним, з обох боків терміна є два підкреслення.
Приклад коду для імені в Python:
Як було сказано раніше, коли ми запускаємо файл коду, код виконується безпосередньо — він навіть не імпортується в інший файл — і в результаті значення змінної __name__ змінюється на __main__.
# defining a function def anything(): print('It is a function in the ScriptP1.') if __name__=='__main__': anything() print('Called from the ScriptP1.') else: print('ScriptP1 is imported into another file.')
Вихід:
It is a function in the ScriptP1. Called from the ScriptP1.
Пояснення:
Функція Anything(), указана в сценарії ScriptP1, виконується безпосередньо як основна програма, як показано у виводі «Це функція в ScriptP1». а потім «Викликається зі сценаріюP1». Коли сценарій запускається безпосередньо в Python, змінна __name__ має значення '__main__'; отже, умова if __name__=='__main__': обчислюється як True, викликаючи функцію Anything(). Інструкція print, яка наведена нижче, підтверджує, що сценарій справді виконується безпосередньо.
повний суматор
Тепер давайте створимо новий файл сценарію Python під назвою ScriptP2.py, імпортуємо до нього ScriptP1.py і спробуємо викликати метод ScriptP1 будь-що().
код: The ScriptP2.py код наведено тут:
import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.')
Вихід:
ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2.
Пояснення:
Наданий сценарій Python показує, як імпортувати модуль «ScriptP1» в активний сценарій. Метод 'anything()' присутній у 'ScriptP1', і він викликається в основному сценарії. Ця функція викликається, і сценарій виводить «Викликано зі сценаріюP2». щоб вказати, що виклик функції завершено. Цей потік подій вказує на те, що функція, указана в «ScriptP1», була доступна та успішно виконана в контексті сценарію, який зараз виконується, який ідентифікується як «ScriptP2».
Коли оператор імпорту для ScriptP1 запускався всередині ScriptP2, змінна __name__ мала значення ScriptP1 (назва модуля); але, оскільки ScriptP2 був першим сценарієм, який запускався, тепер він матиме значення __main__.
Друк значення __name__ :
Давайте надрукуємо значення змінної __name__ на кожному етапі виконання, щоб допомогти вам краще зрозуміти це.
приклад: Вихідний код сценарію ScriptP1.py Python наведено нижче:
print('Value or the variable __name__ : ' + __name__)
Вихід:
Value or the variable __name__ : __main__
Пояснення:
суматор повний
Зразок коду Python, який надається, виводить значення змінної __name__, яке під час безпосереднього запуску сценарію отримує значення «main». Це означає, що коли сценарій запускається безпосередньо, блок коду, який стоїть після умови if __name__ == '__main__':, виконуватиметься, а не імпортуватиметься як модуль до іншого сценарію. Така поведінка часто використовується для розрізнення між виконанням сценарію як основної програми та його імпортом в інший сценарій як модуль.
Приклад 2: А ось вихідний код сценарію ScriptP2.py:
# importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__)
Вихід:
Value or the variable __name__ : __main__
Пояснення:
Наданий сценарій Python використовує оператор import для імпорту файлу «ScriptP1.py. ' Коли він виконується, 'main' друкується як значення змінної __name__. Це означає, що замість того, щоб бути імпортованим як модуль в інший сценарій, сценарій виконується безпосередньо як основна програма. Під час виконання сценаріїв Python це звичайна поведінка; контекст виконання сценарію відображається в змінній __name__.
Резюме:
У більшості мов програмування основний метод або функція зазвичай використовується як точка, в якій виконується будь-яка програма. Але як щодо Python? Виконання програми Python (скрипту) зазвичай починається з нульового рядка або рівня відступу програми 0. Однак створення змінної __name__ відбувається до запуску програми Python. Цю змінну можна використовувати для заміни основного методу в Python.