1. Sissejuhatus
Konstruktsioon if name == ‘main‘, mida sageli näeb Pythoni programmides, on oluline funktsioon, mis määrab, kuidas skript käivitati. Selle konstruktsiooni kasutades võib sama kood käituda erinevalt, sõltuvalt sellest, kas see on otse käivitatud või teise skripti kaudu imporditud.
Õigesti mõistes seda omadust, saate parandada koodi taaskasutatavust ja hooldatavust ning võimaldada tõhusamat silumist ja testimist. Selles artiklis selgitame üksikasjalikult selle konstruktsiooni rolli, kasutamist ja eeliseid, koos konkreetsete koodinäidetega.
2. Põhialused Pythoni name ja main kohta
Mis on Pythoni erimuutuja name?
Kui Pythoni programm käivitatakse, luuakse automaatselt mitu erimuutujat. __name__ on üks neist ja salvestab käivitatava faili (mooduli) nime. Tavaliselt näitab __name__ muutujas, millisest moodulist programm käivitati.
Märkus: Mooduli ja skripti erinevus
Moodul: Fail, mis sisaldab Pythoni koodi, mille eesmärk on olla imporditud ja kasutatud teiste failide poolt.
Skript: Pythoni fail, mis on mõeldud käivitamiseks programmina, tavaliselt ei impordita seda teistest failidest, vaid käivitatakse otse.
Näide: name käitumine
Näiteks kujutage ette faili example.py järgmise sisuga.
# example.py
print(__name__)
Kui käivitate selle faili otse, muutub __name__ väärtuseks '__main__' ja terminal kuvab järgmist:
__main__
Teisest küljest, kui fail imporditakse teisest failist, seatakse __name__ väärtuseks faili nimi 'example', mitte __main__. See näitab, et __name__ väärtus sõltub sellest, kuidas skript käivitatakse.
Mis on main?
Pythoni tõlgendaja määrab käivitatavale failile erilise nime __main__. See võimaldab Pythoni programmil kontrollida, kas skript käivitatakse otse, kontrollides __main__ väärtust.

3. Praktikaline kasutamine: if __name__ == '__main__'
Konstruktsiooni if name == ‘main‘ kasutamine võimaldab käivitada spetsiifilist koodi ainult siis, kui Pythoni skript käivitatakse otse. See konstruktsioon on väga kasulik, et saada parem kontroll koodi käitumise üle.
Põhisüntaks
if __name__ == '__main__':
# Code that runs only when the script is executed directly
print("This script is being run directly.")
Konkreetne näide
Allpool on kood, mis kasutab faili calculate.py näitena. See fail sisaldab funktsiooni ja tingimuslauset.
# calculate.py
def add(a, b):
return a + b
if __name__ == '__main__':
result = add(3, 4)
print("Calculation result:", result)
Käivitustulemus
Kui käivitate selle faili otse, annab see järgmise väljundi.
Calculation result: 7
Teisest küljest, kui see calculate moodul imporditakse teisest failist, ei käivitu kood, mis asub if __name__ == '__main__' all. Allpool on näide impordist ja kasutamisest teisest failist, main_script.py.
# main_script.py
import calculate
# When imported, the code under if __name__ == '__main__' in calculate.py is not executed
print(calculate.add(10, 5)) # 15 is printed
Nagu näha, võimaldab if name == ‘main‘ konstruktsioon muuta skripti käitumist sõltuvalt sellest, kas see käivitatakse otse või imporditakse teise skripti poolt.
4. Selle konstruktsiooni kasutamise eelised
1. Parandatud mooduli taaskasutatavus
Kasutades if name == ‘main‘, suurendate mooduli taaskasutatavust. See takistab tarbetu koodi käivitamist, kui moodul imporditakse, ja võimaldab kontrollida, et ainult vajalikud osad käivitatakse, mis parandab koodi hooldatavust.
2. Lihtsam testimine
Asetades test- või silumiskoodi if name == ‘main‘ sisse, saate arendamise ajal hõlpsasti teste käivitada. Kuna testikood ei käivitu, kui moodul imporditakse, saate tõhusamalt siluda.
Näite testkood
Lisame lihtsa testi calculate.py‑le.
# calculate.py
def add(a, b):
return a + b
if __name__ == '__main__':
# Test code
print("3 + 4 =", add(3, 4))
print("10 + 5 =", add(10, 5))
Sel viisil, kui lihtsad testid käivitatakse ainult siis, kui moodulit käivitatakse otse, ei käivitu testid, kui moodulit imporditakse teise koodi poolt, ning kasutatakse ainult vajalikke funktsioone. 
5. Ettevaatusabinõud ja parimad tavad
Ettevaatusabinõud
- Paranda koodi selgust
if __name__ == '__main__'Aseta test- ja käivituskood selle punkti alla, et selgelt eraldada faili vastutusalad. Veendu, et osad, mida ei tohiks importimisel käivitada, on tingimuslause sees, et vältida soovimatut koodi käivitumist. - Ole ettevaatlik ringimportidega Kui mitu faili impordivad üksteist koodis, kasutades
if __name__ == '__main__', ole ettevaatlik ringimportide vältimiseks. Kompleksed moodulide sõltuvused suurendavad ringimportide riski, seega püüa hoida sõltuvused lihtsana.
Parimad tavad
- Aseta testkood põhiplokki Asetades testkoodi
if __name__ == '__main__'sisse, väldid tarbetut käivitamist, kui moodulit imporditakse teise koodi poolt. Tagades, et testid käivitatakse ainult siis, kui moodulit käivitatakse otse, väldid soovimatuid käitumisi. - Grupeeri seotud funktsioonid kokku Grupeerides seotud funktsioonid
if __name__ == '__main__'sees ja kutsudes neid vajadusel, jääb sinu kood lühikeseks, kergemini loetavaks ja lihtsamini hooldatavaks.
6. Kokkuvõte
“if name == ‘main‘” konstruktsioon on mugav viis kindlaks teha, kuidas Python skript käivitati. Selle konstruktsiooni kasutades saad kindlustada, et kood käivitub ainult siis, kui skript käivitatakse otse, parandades mooduli taaskasutatavust ja muutes testimise lihtsamaks.
Programmeerides Pythonis, kasuta seda konstruktsiooni tõhusalt ning eralda skriptid ja moodulid õigesti, et parandada koodi hooldatavust ja taaskasutatavust.



