Micropython Quicky: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(Set)
(str)
Zeile 49: Zeile 49:
 
==== str====
 
==== str====
 
String ist sowohl Datentyp als auch Datenstruktur.<br>
 
String ist sowohl Datentyp als auch Datenstruktur.<br>
Chr gibt es nicht.
+
Chr für einen einzelnen Charakter gibt es nicht.
  
 
==== bool====
 
==== bool====

Version vom 2. Juni 2024, 15:39 Uhr

Das hier ist die Vorbereitung für einen Kurs Micropython für Umsteiger der eventuell nach den Sommerferien stattfindet.

Dieser Kurs richtet sich an Leute die schon etwas programmiert haben, z.B. mit der Arduino-IDE oder auf dem PC.
Er ist nicht für Programmiereinsteiger geeignet, weil Grundlagen der Programmierung nicht vermittelt werden.
Es wird vorausgesetzt, dass die Teilnehmer grundlegende Programmierkentnisse besitzen.
Im Kurs werden die Unterschiede von Micropython zu C oder anderen C-ähnlichen Programmiersprachen, sowie die Besonderheiten von Microcontroller besprochen.

Als Hardware kommen der Raspberry Pi Pico und das Micropython Demoboard zum Einsatz.
Das Gelernte ist aber auch auf andere Microcontroller übertragbar, auf denen Micropython läuft (z.B. ESP32, STM32).

Was ist ein Microcontroller im Gegensatz zum PC?

Was bietet das Demoboard?

Die IDE Thonny

Python

Python ist objektorentiert entwickelt worden. Alles in Python ist ein Objekt. Demnach hat auch Alles Methoden.
In Micropython sind diese häufig nur sehr rudimentär implementiert.

Micropython

Python vs. Micropython

Micropython ist eine an den geringeren Speicher und die Besonderheiten von Microcontrolern angepasste Python Version.
D.h. dass die grundlegenden Konzepte von Python in Micropython vorhanden sind. Allerdings sind nicht alle Methoden der Klassen von Python vorhanden. Andererseits gibt es in Micropython Klassen die in Python nicht existieren. Manches verhält sich in Micropython anders als in Python. Informationen dazu findet man in der Dokumentation zu Micropython: https://docs.micropython.org/en/latest/
Alles in Allem kann man aber sagen, dass man die Anleitungen von Python zum Lernen von Micropython verwenden kann. Wenn mal etwas nicht so funktioniert wie erwartet, dann sollte man in der Micropython Doku nachsehen.

Was unterscheidet Python von anderen Programmiersprachen?

Der auffälligste Unterschied zu anderen Programmiersprachen ist wohl, das Blöcke nicht in {} eingefasst werden, sondern eingerückt werden:

if a > b:
    tue etwas
a = b

Die Einrückung beträgt 4 Spaces - !kein Tab!
Es funktioniert auch mit mehr oder weniger Spaces aber das ist schlechter Stil. Wichtig ist das die Einrückungen immer gleich sind.

Datentypen und Datenstrukturen in Python

Die Datentypen von Python sind recht übersichtlich:

int

Integer sind in ihrer Größe nur durch den Speicherplatz begrenzt.

float

Floats werden mit maximal 7-stelliger Mantisse ausgegeben.
Intern wird mit deutlich mehr Stellen gearbeitet, denn die üblichen float-Rundungs-Fehler treten nicht auf.

str

String ist sowohl Datentyp als auch Datenstruktur.
Chr für einen einzelnen Charakter gibt es nicht.

bool

False
Leere Datenstrukturen, 0 und None.
True
Alles Andere.

None

None ist nichts. Entspricht einer nicht initialisierter Variablen.
Es ist nicht 0!

complex

Python kann auch mit komplexen Zahlen arbeiten.

einfache Variablen

Es wird kein Typ für eine Variable festgelegt. Python ist dynamisch typisiert.

>>> x = 42
>>> x
42
>>> x = 3.14
>>> x
3.14
>>> x = 'Hallo'
>>> x
'Hallo'
>>> 

In neueren Pythonversionen können auch Typen festgelegt werden. In Micropython ist das aber nicht implementiert.

Listen

liste = [1, 2, 3, 'Hallo', 3.14]
>>> liste
[1, 2, 3, 'Hallo', 3.14]

Die Elemente einer Liste sind indexiert.

>>> liste[0]
1
>>> liste[3]
'Hallo'

Tuple

Tuple sind wie Listen aber unveränderbar.

tuple = (1, 2, 3, 'attraktor')

Wenn nur ein Element im Tuple vorhanden ist, ist ein Komma am Ende erforderlich:

>>> tup = (23)
>>> type(tup)
<class 'int'>
>>> tup = (23,)
>>> type(tup)
<class 'tuple'>

Set

Sets dürfen keine mehrfachen Einträge haben! Die Reihenfolge der Einträge ist nicht festgelegt. Sets sind für die Arbeit mit Mengen vorgesehen.

my_set = {1, 2, 3, 'Hallo'}

Dictionarys

Dictionaries enthalten key:value Paare (item).

dikt = {'eins': 1, 'zwei': 2}

Der Zugriff erfolgt durch den Key:

>>> dikt['eins']
1

Strings

Strings werden in Anführungszeichen eingeschlossen. Es können einzelne ' und doppelte " Anführungszeichen benutzt werden. Das schließende Anführungszeichen muss dem öffnenden Anführungszeichen entsprechen.

Operatoren

Die Operatoren von Python unterscheiden sich eigentlich nicht von den üblichen Operatoren.
Die einzige Ausnahme ist die Division!

/
liefert einen float zurück
>>> 5 / 3
1.666667
//
liefert einen int zurück
>>> 5 // 3
1

Entscheidungen

Für Entscheidungen gibt es:

if x > 0:
    print("Positive")
elif x == 0:
    print("Zero")
else:
    print("Negative")

Schleifen

Es gibt in Python nur 2 Schleifen. Die for- und die while-Schleife.
Die for Schleife entspricht nicht der üblichen for-next-Schleife. Sie ist speziell für die Verarbeitung von Iterables ausgelegt.

for item in my_list:
    print(item)

Eine klassische for-Schleife lässt sich so realisieren:

>>> for i in range(10):
        print(i)
    
0
1
2
3
4
5
6
7
8
9

Wenn für eine Liste zusätzlich der Index benötigt wird:

for index, item in enumerate(my_list):
    print(index, item)

Die while-Schleife entspricht dem Üblichen:

while condition:
    # code

Module / Bibliotheken

Wie für andere Programmiersprachen, gibt es auch für Python Bibliotheken. Wenn es sich um ein einzelnes File handelt heißen sie hier Module. Wenn es eine Sammlung von mehreren Dateien ist werden sie Libraries genannt.
Das Erstellen von Modulen ist in Python ganz einfach. Im Prinzip kann jedes Pythonscript als Modul verwendet werden.
Module werden mit import eingebunden.
Es gibt 4 Möglichkeiten Module einzubinden:

import modul
import modul as mo
from modul import function
from modul import function as func

Beim Einbinden eines Modules wird dieses ausgeführt. Es können also nicht nur Funktionen oder Klassen importiert werden, sondern auch Variablen initiiert oder z.B. eine Wlan-Verbindung aufgebaut werden.
Da es sehr einfach ist ein Modul für Python zu erstellen, gibt für Python eine Unmenge Module für die verschiedensten Anwendungen.
Für Micropython gibt es nicht so viele Module, aber für die meisten Sachen findet man welche:
Es gibt verschiedene Quellen für Module, die nicht direkt Microphyton enthalten sind. Alle sind über das Internet zu erreichen:

Hilfsfunktionen

help('modules')
gibt die vorhandenen Module aus.
dir(Objektname)
gibt den Inhalt eines Objekts aus.
type(Objektname)
gibt den Typ des Objekts aus.
id(Objektname)
gibt die ID des Objekts aus.

Namen in Python

Namen dürfen in Python aus Groß-, Kleinbuchstaben, Zahlen und dem Unterstrich gebildet werden.
Sie dürfen nicht mit einer Zahl beginnen!

Variablen- und Funktionsnamen
... werden komplett klein geschrieben. Mehrere Worte werden durch Unterstrich getrennt (snakecase).
Konstantennamen
... werden komplett groß geschrieben.
Klassennamen
... werden beim ersten Buchstaben groß geschrieben.
Modulnamen
... werden komplett klein geschrieben und ".py" angehängt.

Programmieren mit Micropython

Links

https://deasadiqbal.medium.com/python-cheatsheet-5474e14853cb