11. Lektion: Module: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(Created page with "== Was sind Module ?== == Module benutzen== Module müssen importiert werden bevor man die Funktionen daraus nutzen kann.<br> Üblicherweise werden die Importanweisungen z...")
 
(Es gibt 4 Möglichkeiten Module zu importieren:)
 
(45 dazwischenliegende Versionen des gleichen Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Was sind Module ?==
 
== Was sind Module ?==
 
+
Module sind Sammlungen von Funktionen, die in einer Datei zusammen gefasst sind.<br>
 
+
In anderen Programmiersprachen werden sie Bibliotheken genannt.<br>
 
+
Bibliotheken sind in Phython die Zusammenfassung mehrerer Module<br>
 +
Ausführlichere Informationen gibt es hier (english):<br>
 +
https://martinxpn.medium.com/how-modules-actually-work-in-python-and-how-to-create-your-own-custom-module-81-100-days-of-d1a84fead104<br>
  
 
== Module benutzen==
 
== Module benutzen==
 
Module müssen importiert werden bevor man die Funktionen daraus nutzen kann.<br>
 
Module müssen importiert werden bevor man die Funktionen daraus nutzen kann.<br>
Üblicherweise werden die Importanweisungen ziemlich am Anfang des Scriptes stehen.<br>  
+
Üblicherweise sollen die Importanweisungen am Anfang des Scriptes stehen.<br>  
 
==== Es gibt 4 Möglichkeiten Module zu importieren:====
 
==== Es gibt 4 Möglichkeiten Module zu importieren:====
# <pre>import modulname</pre>
+
*; Einfacher Import
#: importiert alles aus dem Modul.
+
*: <pre>import modulname</pre>
#; Anwendung:  
+
*: importiert alles aus dem Modul. Die importierten Funktionen bleiben im Namespace des Moduls.
#: <pre>modulname.funktionsname()</pre>
+
*; Anwendung:  
# <pre>import modulname as aliasname</pre>
+
*: <pre>modulname.funktionsname()</pre>
# <pre>from modulname import *</pre>
+
 
# <pre>from modulname import funktion as aliasname_der_funktion</pre>
+
*; Einfacher Import mit Aliasnamen
 +
*: <pre>import modulname as aliasname</pre>
 +
*: importiert alles aus dem Modul. Das Modul erhält den Aliasnamen. Die importierten Funktionen bleiben im Namespace des Moduls (Aliasnamen).
 +
*; Beispiel
 +
*: <pre>import network as net</pre>
 +
*; Anwendung:
 +
*: <pre>aliasname.funktionsname()</pre>
 +
 
 +
*; Import in den Hauptnamespace
 +
*: <pre>from modulname import *</pre>
 +
*: importiert das angegebenen Modul in den Namensraum des Hauptprogramms.
 +
*: * bedeutet, es wird alles importiert.
 +
*: Dieser Aufruf sollte vermieden werden, weil es zu Namenskonflikten kommen kann.
 +
*: Man sollte sehr genau wissen was man tut!
 +
*: Stattdessen soll der gewünschte Funktionname oder mehrere, durch Komma getrennte Funktionsnamen benutzt werden.
 +
*; Beispiel
 +
*: <pre>from os import mktime, sleep</pre>
 +
*: Das spart auch noch Speicherplatz, weil nicht Alles aus dem Modul geladen wird.
 +
*; Anwendung:
 +
*: <pre>funktionsname()</pre>
 +
 
 +
*; Import in den Hauptnamespace mit Aliasnamen
 +
*: <pre>from modulname import funktion as aliasname_der_funktion</pre>
 +
*: importiert die Funktion unter dem Aliasnamen.
 +
*; Beispiel
 +
*: <pre>from os import sleep as wait</pre>
 +
*; Anwendung:
 +
*: <pre>aliasname_der_funktion()</pre>
 +
 
 +
https://realpython.com/run-python-scripts/?utm_source=notification_summary&utm_medium=email&utm_campaign=2023-10-24
 +
 
 +
== Was ist in einem Modul drin ?==
 +
dir(modulname)
 +
zeigt den Inhalt eines Moduls an.
 +
<pre>
 +
>>> dir(time)
 +
['__class__', '__name__', 'localtime', 'mktime', 'sleep', 'sleep_ms', 'sleep_us',
 +
'ticks_add', 'ticks_cpu', 'ticks_diff', 'ticks_ms', 'ticks_us', 'time']
 +
</pre>
 +
== Module selber schreiben ==
 +
Es ist Python ganz einfach Module selbst zu schreiben. Es unterscheidet sich nicht vom Schreiben von Scripts. Allerdings dürfen Module auch nur Funktionen enthalten. Es können also auch bestehende Scripts importiert und die darin enthaltenen Funktionen genutzt werden.
 +
 
 +
=== __name__ magic===
 +
Beim importieren von Scripten wird darin enthaltener Programmcode ausgeführt. Das lässt sich aber verhindern.<br>
 +
Jedes Script enthält einige magische Variablen, die von Python erzeugt und beschrieben werden. Das sind bei dir() die mit den doppelten Unterstrichen am Anfang und am Ende.<br>
 +
Die magische Variable __name__ enthält beim Import des Scripts als Modul den Dateinamen.<br>
 +
Wenn das Script aber als Hauptprogramm gestartet wird, steht "__main__" darin.<br>
 +
<pre>
 +
if __name__ == '__main__':
 +
    main()
 +
</pre>
 +
Mit dieser Abfrage kann erreicht werden, das main() nur ausgeführt wird, wenn das Script ais Hauptprogramm gestartet wird.<br>
 +
Das Hauptprogramm ist dann in der Funktion main() definiert.
 +
 
 +
== Module mit mip laden ==
 +
In Python kann man mit pip ganz einfach Module herunterladen und installieren. So etwas gab es bisher für Micropython nicht. Seit neuestem gibt es dazu mip. Ich habe damit noch keine Erfahrungen machen können.<br>
 +
Der erste Link zeigen auf die entsprechende Information dazu in den Micropython Docs. Der Zweite auf die dazugehörige Modulsammlung.
 +
* https://docs.micropython.org/en/latest/reference/packages.html?highlight=mip
 +
** https://github.com/micropython/micropython-lib
 +
Diese Info steht hier für Leute die es ausprobieren möchten.<br>
 +
Bei Erfolg bitte im Elektronik Stammtisch darüber berichten!
 +
 
 +
== Navigation ==
 +
[[Micropython_Kurs_2023_-_Teil_1|Zurück zu Micropython Kurs 2023 - Teil 1]]<br>
 +
[[Micropython Kurs 2023|Zurück zur "Micropython Kurs 2023" Startseite]]<br>
 +
[[Programmieren|Zurück zur Programmieren Startseite]]<br>
 +
[[Attraktor_Wiki|Zurück zur Wiki Startseite]]<br>

Aktuelle Version vom 25. Oktober 2023, 09:43 Uhr

Was sind Module ?

Module sind Sammlungen von Funktionen, die in einer Datei zusammen gefasst sind.
In anderen Programmiersprachen werden sie Bibliotheken genannt.
Bibliotheken sind in Phython die Zusammenfassung mehrerer Module
Ausführlichere Informationen gibt es hier (english):
https://martinxpn.medium.com/how-modules-actually-work-in-python-and-how-to-create-your-own-custom-module-81-100-days-of-d1a84fead104

Module benutzen

Module müssen importiert werden bevor man die Funktionen daraus nutzen kann.
Üblicherweise sollen die Importanweisungen am Anfang des Scriptes stehen.

Es gibt 4 Möglichkeiten Module zu importieren:

  • Einfacher Import
    import modulname
    importiert alles aus dem Modul. Die importierten Funktionen bleiben im Namespace des Moduls.
    Anwendung
    modulname.funktionsname()
  • Einfacher Import mit Aliasnamen
    import modulname as aliasname
    importiert alles aus dem Modul. Das Modul erhält den Aliasnamen. Die importierten Funktionen bleiben im Namespace des Moduls (Aliasnamen).
    Beispiel
    import network as net
    Anwendung
    aliasname.funktionsname()
  • Import in den Hauptnamespace
    from modulname import *
    importiert das angegebenen Modul in den Namensraum des Hauptprogramms.
    * bedeutet, es wird alles importiert.
    Dieser Aufruf sollte vermieden werden, weil es zu Namenskonflikten kommen kann.
    Man sollte sehr genau wissen was man tut!
    Stattdessen soll der gewünschte Funktionname oder mehrere, durch Komma getrennte Funktionsnamen benutzt werden.
    Beispiel
    from os import mktime, sleep
    Das spart auch noch Speicherplatz, weil nicht Alles aus dem Modul geladen wird.
    Anwendung
    funktionsname()
  • Import in den Hauptnamespace mit Aliasnamen
    from modulname import funktion as aliasname_der_funktion
    importiert die Funktion unter dem Aliasnamen.
    Beispiel
    from os import sleep as wait
    Anwendung
    aliasname_der_funktion()

https://realpython.com/run-python-scripts/?utm_source=notification_summary&utm_medium=email&utm_campaign=2023-10-24

Was ist in einem Modul drin ?

dir(modulname)

zeigt den Inhalt eines Moduls an.

>>> dir(time)
['__class__', '__name__', 'localtime', 'mktime', 'sleep', 'sleep_ms', 'sleep_us', 
'ticks_add', 'ticks_cpu', 'ticks_diff', 'ticks_ms', 'ticks_us', 'time']

Module selber schreiben

Es ist Python ganz einfach Module selbst zu schreiben. Es unterscheidet sich nicht vom Schreiben von Scripts. Allerdings dürfen Module auch nur Funktionen enthalten. Es können also auch bestehende Scripts importiert und die darin enthaltenen Funktionen genutzt werden.

__name__ magic

Beim importieren von Scripten wird darin enthaltener Programmcode ausgeführt. Das lässt sich aber verhindern.
Jedes Script enthält einige magische Variablen, die von Python erzeugt und beschrieben werden. Das sind bei dir() die mit den doppelten Unterstrichen am Anfang und am Ende.
Die magische Variable __name__ enthält beim Import des Scripts als Modul den Dateinamen.
Wenn das Script aber als Hauptprogramm gestartet wird, steht "__main__" darin.

if __name__ == '__main__':
    main()

Mit dieser Abfrage kann erreicht werden, das main() nur ausgeführt wird, wenn das Script ais Hauptprogramm gestartet wird.
Das Hauptprogramm ist dann in der Funktion main() definiert.

Module mit mip laden

In Python kann man mit pip ganz einfach Module herunterladen und installieren. So etwas gab es bisher für Micropython nicht. Seit neuestem gibt es dazu mip. Ich habe damit noch keine Erfahrungen machen können.
Der erste Link zeigen auf die entsprechende Information dazu in den Micropython Docs. Der Zweite auf die dazugehörige Modulsammlung.

Diese Info steht hier für Leute die es ausprobieren möchten.
Bei Erfolg bitte im Elektronik Stammtisch darüber berichten!

Navigation

Zurück zu Micropython Kurs 2023 - Teil 1
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite

Diese Seite wurde zuletzt am 25. Oktober 2023 um 09:43 Uhr geändert. Diese Seite wurde bisher 2.138 mal abgerufen.