Името на изпълнявания в момента скрипт или модул на Python се съхранява в специалната променлива __name__ на Python. Python 3.0 въведе променливата __name__, която отсъства от Python 2. x. Текущата стойност на Python скрипт или модул, __main__, се присвоява на променливата __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()
Изход:
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__.
подниз низ java
Използване на условието if name == main :
Ние използваме оператор if и състоянието __име__ == __главно__ да декларира това определен код на Python трябва да бъде само изпълнява се, когато скриптът се стартира директно .
шрифт gimp
Пример:
# 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.“ последвано от „Извикано от ScriptP1.“ Когато скриптът се изпълнява директно в Python, променливата __name__ е зададена на '__main__'; следователно условието if __name__=='__main__': се оценява на True, извиквайки функцията Anything(). Изявлението за печат, което следва, потвърждава, че скриптът наистина се изпълнява директно.
Сега нека направим нов файл със скрипт на 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' и се извиква в основния скрипт. Тази функция се извиква и скриптът извежда 'Called from the ScriptP2.' за да покаже, че извикването на функцията е завършено. Този поток от събития показва, че функцията, посочена в „ScriptP1“, е била достъпна и успешно изпълнена в контекста на скрипта, който сега се изпълнява, който е идентифициран като „ScriptP2“.
Когато инструкцията за импортиране за ScriptP1 беше изпълнена вътре в ScriptP2, променливата __name__ имаше стойност ScriptP1 (името на модула); но тъй като ScriptP2 беше първият стартиран скрипт, сега той ще има стойност __main__.
Отпечатване на стойността на __name__ :
Нека отпечатаме стойността на променливата __name__ на всеки етап от изпълнението, за да ви помогнем да я разберете по-добре.
Пример: Изходният код на Python скрипта ScriptP1.py е предоставен по-долу:
print('Value or the variable __name__ : ' + __name__)
Изход:
Value or the variable __name__ : __main__
Обяснение:
итерация през map java
Доставеният примерен код на 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 скрипт използва командата за импортиране, за да импортира файла „ScriptP1.py. ' Когато се изпълни, 'main' се отпечатва като стойност на променливата __name__. Това означава, че вместо да бъде импортиран като модул в друг скрипт, скриптът се изпълнява директно като основно приложение. Когато изпълнявате скриптове на Python, това е обичайното поведение; контекстът на изпълнение на скрипта се отразява в променливата __name__.
Резюме:
В повечето езици за програмиране основният метод или функция обикновено се използва като точка, в която се изпълнява всяка програма. Но какво да кажем за Python? Изпълнението на програма (скрипт) на Python обикновено започва от нулев ред или ниво на отстъп 0 на програмата. Създаването на променлива __name__ обаче се случва преди изпълнението на програмата на Python. Тази променлива може да се използва за замяна на основния метод в Python.