Python Funkcja i metoda główna: Zrozumienie def Main()

⚡ Inteligentne podsumowanie

Python Funkcja main oznacza punkt początkowy, w którym interpreter rozpoczyna uruchamianie programu. Zdefiniowana za pomocą def main() i sparowana z klauzulą ​​if __name__ == “__main__”, oddziela wielokrotnego użytku kod modułu od samodzielnego wykonywania skryptu.

  • 🚀 Punkt wejścia: Funkcja main definiuje, gdzie rozpoczyna się wykonywanie programu, dzięki czemu czytelnicy mogą śledzić przebieg programu od jednego, wyraźnego punktu początkowego.
  • 🧩 def main():: Owińping logika wewnątrz def main() oddziela konfigurację i wykonywanie od definicji funkcji i klas.
  • 🔒 __name__ strażnik: Sprawdzenie if __name__ == “__main__” uruchamia funkcję main() tylko podczas bezpośredniego wykonywania, nigdy podczas importowania.
  • 🔁 Moduły wielokrotnego użytku: Kod chroniony pozwala innym skryptom importować Twoje funkcje bez uruchamiania całego programu.
  • ⌨️. Dane wejściowe wiersza poleceń: Funkcja main() jest naturalnym miejscem odczytywania argumentów sys.argv i zwracania kodu wyjścia.
  • 🤖 Pomoc AI: Asystenci AI, tacy jak GitHub Copilot, tworzą szablon main() i strażnika __name__ z krótkiego monitu.

Python Główna funkcja

Czym jest Python Główna funkcja?

Python główna funkcja jest punktem początkowym każdego programu. Po uruchomieniu programu, Python Interpreter uruchamia kod sekwencyjnie. Funkcja główna jest wykonywana tylko wtedy, gdy jest uruchamiana jako Python program. Funkcja główna nie zostanie uruchomiona, jeśli zostanie zaimportowana jako moduł.

Do czego służy funkcja def main()? PythonAby to zrozumieć, rozważ poniższy przykładowy kod, który jest częścią rdzenia Python programowanie podstawy:

def main() Przykład 1

def main():
     print ("Hello World!")
print ("Guru99")

Python Główna funkcja

Tutaj mamy dwa fragmenty wydruku – jeden jest zdefiniowany w funkcji głównej, czyli „Witaj świecie!”, a drugi jest niezależny i brzmi „Guru99”. Po uruchomieniu funkcji def main():

  • Tylko "GuruWydruki 99”
  • a nie kod „Hello World!”

To dlatego, że nie zadeklarowaliśmy wezwania funkcja „if__name__== „__main__”.

Ważne jest, aby po zdefiniowaniu funkcji main wywołać kod za pomocą if__name__== “__main__” i następnie uruchomić kod, tylko wtedy otrzymasz wynik „hello world!” w konsoli programowania. Rozważ następujący kod

def main() Przykład 2

def main():
    print("Hello World!")

if __name__ == "__main__":
    main()

print("Guru99")

GuruW tym przypadku wydrukowano liczbę 99.

Python Główna funkcja

Oto wyjaśnienie,

  • Kiedy Python interpreter czyta plik źródłowy, wykona cały znajdujący się w nim kod.
  • Kiedy Python uruchamia „plik źródłowy” jako program główny, ustawia zmienną specjalną (__nazwa__) na wartość („__main__”).
  • Kiedy wykonasz główną funkcję w Pythonie, odczyta ona instrukcję „if” i sprawdzi, czy __name__ jest równe __main__.
  • In Python „if__name__== „__main__” pozwala na uruchomienie Python pliki albo jako moduły wielokrotnego użytku lub samodzielne programy.

Dlaczego warto używać funkcji main() w Python?

Python Nie wymaga pisania funkcji main, a mimo to doświadczeni programiści używają jej w niemal każdym nietrywialnym skrypcie. Wzorzec def main() porządkuje plik i sprawia, że ​​kod jest bezpieczny do ponownego użycia. Oto główne powody, dla których warto go używać:

  • Wyczyść punkt wejścia: Funkcja main() informuje czytelnika, gdzie dokładnie rozpoczyna się program, dzięki czemu logika jest łatwa do zrozumienia.
  • Moduły wielokrotnego użytku: Code chronione przez if __name__ == “__main__” działa tylko przy bezpośrednim wykonaniu, więc inne pliki mogą importować twoje funkcje bez efektów ubocznych.
  • Zasięg lokalny: Zmienne utworzone w funkcji main() pozostają lokalne, co pozwala uniknąć przypadkowych konfliktów z nazwami globalnymi w innych częściach modułu.
  • Łatwiejsze testowanie: Izolowanie logiki w funkcji main() pozwala zestawowi testów na bezpośrednie wywołanie jej i sprawdzenie wyniku.
  • Wspólna konwencja: Funkcja main() jest powszechnie rozpoznawanym sygnałem punktu wejścia programu, który poprawia łatwość utrzymania w różnych zespołach.

Krótko mówiąc, funkcja main() jest opcjonalna w Pythonale dzięki temu większe programy pozostają czytelne, możliwe do przetestowania i bezpieczne do zaimportowania.

Zmienna __name__ i Python Moduł

Aby zrozumieć znaczenie zmiennej __name__ w Python metoda funkcji main, rozważmy następujący kod:

def main():
    print("hello world!")

if __name__ == "__main__":
    main()

print("Guru99")

print("Value in built variable name is:  ",__name__)

Zmienna __name__ i Python Moduł

Teraz rozważmy, że kod jest importowany jako moduł

import MainFunction

print("done")

Zmienna __name__ i Python Moduł

Oto wyjaśnienie kodu: Podobnie jak C. Python używa == do porównania, podczas gdy = do przypisania. Python interpreter używa funkcji main na dwa sposoby

bieg bezpośredni:

  • __imię__=__główny__
  • if instrukcja == True, a skrypt w _main_zostanie wykonany

importuj jako moduł

  • __name__= nazwa pliku modułu
  • if instrukcja == false, a skrypt w __main__ nie zostanie wykonany

Kiedy kod zostanie wykonany, sprawdzi nazwę modułu za pomocą „if”. Mechanizm ten zapewnia, że ​​główna funkcja jest wykonywana tylko jako bezpośrednie działanie, a nie podczas importu jako moduł.

Powyższe przykłady to Python 3 kody, jeśli chcesz skorzystać Python 2, proszę rozważyć poniższy kod

def main():
  print "Hello World!"
  
if __name__== "__main__":
  main()

print "Guru99"

In Python 3, nie musisz używać if__name. Poniższy kod również działa

def main():
  print("Hello World!")
  
main()
print("Guru99")

Uwaga: Upewnij się, że po zdefiniowaniu funkcji main pozostawisz wcięcie i nie zadeklarujesz kodu bezpośrednio pod funkcją def main(): , w przeciwnym razie wystąpi błąd wcięcia.

Jak przekazać argumenty wiersza poleceń do Python Funkcja main()

Funkcja main() to naturalne miejsce do obsługi danych wejściowych przekazywanych przez użytkownika w wierszu poleceń. Python Przechowuje te wartości na liście sys.argv, którą udostępnia standardowy moduł sys. Pierwszy element, sys.argv[0], to nazwa skryptu, a każda następna wartość to argument podany przez użytkownika.

Poniższy przykład odczytuje i drukuje argumenty wiersza poleceń z wnętrza funkcji main():

import sys

def main():
    print("Script name:", sys.argv[0])
    print("Arguments passed:", sys.argv[1:])

if __name__ == "__main__":
    main()

Jeśli zapiszesz plik jako script.py i uruchomisz python script.py alfa betaProgram drukuje nazwę skryptu i listę ['alpha', 'beta']. Ponieważ wartości trafiają do main(), logika pozostaje uporządkowana i łatwa do przetestowania.

Oto kilka praktycznych wskazówek dotyczących pracy z danymi wejściowymi wiersza poleceń:

  • Wytnij nazwę skryptu: Użyj sys.argv[1:], aby odczytać tylko argumenty wpisane przez użytkownika.
  • Użyj argparse w przypadku prawdziwych narzędzi: Wbudowany moduł argparse analizuje flagi, opcje i tekst pomocy znacznie bezpieczniej niż ręczne czytanie pliku sys.argv.
  • Zwróć kod wyjścia: Otocz wywołanie jako sys.exit(main()), tak aby wartość zwracana przez main() stała się kodem wyjścia procesu.
  • Sprawdź wcześniej: Przed uruchomieniem reszty programu sprawdź liczbę i typ argumentów na początku funkcji main().

Ten wzorzec zmienia prosty skrypt w niezawodne narzędzie wiersza poleceń, zachowując jednocześnieping każdy krok w ramach pojedynczej, testowalnej funkcji main().

Python Funkcja main() a inne języki programowania

Programiści pochodzący z C, C++lub Java często oczekują obowiązkowej funkcji main(). Python Działa inaczej, ponieważ jest językiem interpretowanym, więc interpreter po prostu uruchamia plik od górnej linii do dolnej. Funkcja main() w Python jest zatem raczej konwencją niż regułą.

  • C, C++, C# i Java: Funkcja main() jest wymaganym punktem wejścia. Środowisko wykonawcze wywołuje ją automatycznie i może istnieć tylko jedna taka funkcja w programie.
  • Python: Funkcja main() nie jest wymagana. Wykonywanie rozpoczyna się od pierwszego wiersza pliku, a def main() działa tylko wtedy, gdy wywoła ją Twój kod.
  • Strażnik: Blok if __name__ == “__main__” daje Python cel podobny do skompilowanego main() poprzez oznaczenie kodu, który powinien zostać uruchomiony tylko wtedy, gdy plik jest programem głównym.

Podczas gdy inne języki wymuszają punkt wejścia main(), Python pozostawia wybór Tobie, oferując taką samą przejrzystość poprzez konwencję zamiast reguły kompilatora.

FAQ

__main__ to nazwa Python Zwraca skrypt najwyższego poziomu, wykryty poprzez zmienną __name__. main() to zwykła funkcja zdefiniowana przez użytkownika, która przechowuje logikę programu. Działają one razem, ale __main__ to nazwa środowiska, a main() to funkcja.

Umieszczenie go na końcu zapewnia Python Zdefiniował już wszystkie powyższe funkcje i klasy przed wywołaniem funkcji main() przez blok. Wcześniejsze uruchomienie funkcji main() mogłoby odwołać się do nazw, które nie są jeszcze zdefiniowane, i spowodować błąd NameError.

Nie. Python Nie przypisuje nazwy „main” żadnego specjalnego znaczenia. Funkcję wejściową można nazwać dowolnie, jednak nazwanie jej „main()” jest mocną konwencją, która sygnalizuje punkt wyjścia programu innym programistom.

Tak. Funkcja main() może zwrócić wartość, a typowy wzorzec zapisuje sys.exit(main()), dzięki czemu return staje się kodem wyjścia procesu. Zwrócenie 0 sygnalizuje powodzenie, a wartość różna od zera sygnalizuje błąd.

Bez strażnika funkcja main() jest uruchamiana zarówno podczas bezpośredniego wykonywania pliku, jak i podczas jego importowania. Inne programy, które chciałyby jedynie ponownie wykorzystać jej funkcje, powodowałyby niepożądane wykonywanie funkcji i skutki uboczne.

Treść funkcji main() musi być wcięta pod linią def main():. Napisanie kolejnego polecenia równo z lewą stroną pozostawia funkcję bez wciętego bloku, więc Python zgłasza błąd IndentationError. Dodaj spójne spacje lub tabulator.

GitHub Copilot automatycznie uzupełnia szkielet def main() i klauzulę ochronną if __name__ == “__main__” na podstawie krótkiego komentarza. Sugeruje również analizę argumentów i docstringi, pozwalając skupić się na logice programu zamiast na szablonach.

W projektach sztucznej inteligencji i uczenia maszynowego funkcja main() stanowi punkt wejścia dla skryptów szkoleniowych lub wnioskowania. Odczytuje hiperparametry z argumentów wiersza poleceń, umożliwia import narzędzi do ponownego użycia oraz ułatwia testowanie i automatyzację eksperymentów.

Podsumuj ten post następująco: