Tytuł podsumowuje pytanie :-)Jaka jest różnica między modułem a skryptem w Pythonie?
Odpowiedz
Skrypt jest generalnie bezpośrednio wykonywalnym kodem, uruchamianym samodzielnie. Moduł jest ogólnie biblioteką, importowaną przez inne fragmenty kodu.
Należy zauważyć, że nie ma wewnętrznego rozróżnienia - oba są wykonywalne i można je importować, chociaż kod biblioteki często nic nie robi (lub po prostu uruchamia testy jednostkowe), gdy zostanie wykonany bezpośrednio, a zaimportowanie kodu zaprojektowanego jako skrypt spowoduje jego do wykonania, stąd wspólny test if __name__ == "__main__"
.
Każdy moduł Pythona może zostać wykonany jako skrypt. Jedyną znaczącą różnicą jest to, że po zaimportowaniu jako moduł nazwa pliku jest podstawą nazwy modułu, natomiast jeśli wykonasz go jako skrypt, moduł ma nazwę __main__
.
To rozróżnienie umożliwia zachowanie różnych zachowań po zaimportowaniu przez dołączenie kodu skryptu do bloku chronionego przez if __name__=="__main__"
. Powodowało to zamieszanie, gdy użytkownik próbował zaimportować moduł główny pod własną nazwą zamiast importować __main__
.
Niewielka różnica między skryptami i modułami polega na tym, że podczas importowania modułu system spróbuje użyć istniejącego pliku .pyc (pod warunkiem, że istnieje i jest aktualny oraz dla tej wersji Pythona) i jeśli musi skompilować z pliku .py, spróbuje zapisać plik .pyc. Po uruchomieniu pliku .py jako skryptu nie próbuje załadować wcześniej skompilowanego modułu, ani nie będzie próbował zapisać skompilowanego kodu. Z tego powodu warto zachować małe skrypty, aby zminimalizować czas uruchamiania.
Proponuję zastąpić wyrażenie * wykonane jako skrypt * po prostu * wykonane *, być może także pozostałe wystąpienia * skryptu * przez * program * zgodnie z sugestią w [komentarzu ʇsәɹoɈ] (https://stackoverflow.com/ pytania/2996110/what-is-the-the-difference-between-a-module-and-a-script-in-python # comment3060238_2996170) – Wolf
- 1. Jaka jest różnica między modułem Ansible template a modułem kopiowania?
- 2. Jaka jest różnica między "pakietem" a "modułem" w programie Frege?
- 3. Jaka jest różnica między przestrzenią nazw a modułem w F #?
- 4. jaka jest różnica między modułem Mavena a projektem Maven
- 5. Różnica między modułem a pakietem w węźle?
- 6. Jaka jest różnica między literałem a zmiennymi w Pythonie?
- 7. Jaka jest różnica między == a === w Verilog?
- 8. Różnica między dataksem datetime a modułem czasu
- 9. Jaka jest różnica między $ a a $$ a w php?
- 10. Jaka jest różnica między modułem npm Firebase i firebase-admin?
- 11. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 12. Jaka jest różnica między pakietem a intencją?
- 13. Jaka jest różnica między krotką a kompresją?
- 14. Jaka jest różnica między uchwytem a wątkiem?
- 15. Jaka jest różnica między cancelBubble a stopPropagation?
- 16. Jaka jest różnica między HAVING a WHERE?
- 17. Jaka jest różnica między użytkownikiem a rolą?
- 18. Jaka jest różnica między StudlyCaps a CamelCase?
- 19. Jaka jest różnica między Const a Constant?
- 20. Jaka jest różnica między @Inject a @PersistenceContext?
- 21. Jaka jest różnica między preferredLocalization a preferredLanguage?
- 22. Jaka jest różnica między JavaBean a POJO?
- 23. Jaka jest różnica między podprocesiem.popen a podprocesią.run?
- 24. Jaka jest różnica między funkcjami a zamknięciami?
- 25. Jaka jest różnica między ramką a ramką?
- 26. Jaka jest różnica między hashowaniem a indeksowaniem?
- 27. Jaka jest różnica między UIViewController a UITableViewController
- 28. Jaka jest różnica między przyszłym a shared_future?
- 29. Jaka jest różnica między tasklet a workqueue
- 30. Jaka jest różnica między Listą a ArrayList?
+1: "brak wewnętrznego rozróżnienia". Po prostu tak go używasz. –
Tak. Poza tym, o ile mówimy o wyróżnieniach, nazwałbym to programem (nie skryptem), chyba że jego głównym zastosowaniem był skrypt działań innych programów. –