Python-Hintergrundwissen
Video-Tutorial Anhang 1 – Python-Syntax: https://singtown.com/learn/50061/
Vorteile der Verwendung von Python
OpenMV kann Python für die Sekundärentwicklung verwenden. Es gibt mehrere Vorteile:
- Einfacher Einstieg
- Speicheranwendung und -freigabe müssen nicht berücksichtigt werden
- Es gibt viele MicroPython-Bibliotheken, die direkt verwendet werden können (nicht kompatibel mit Python-Modulen auf dem PC)
- Das Entwicklungsteam hat verschiedene aufrufbare Algorithmen und Module von OpenMV entwickelt
Python ist eine sehr häufig verwendete Sprache und wird häufig in der Bildverarbeitung, beim maschinellen Lernen und in der Netzwerkprogrammierung eingesetzt. Und Python ist eine sehr einfache Sprache, mit der man anfangen kann, wenn man über Programmierkenntnisse in anderen Sprachen (wie C, C++, Java) verfügt.
Empfohlen, wenn Sie bereits über Programmiererfahrung in C/C++/Java (oder einer anderen Sprache) verfügen.\ Liao Xuefengs Python-Tutorial
Empfohlen, wenn Sie noch keine Programmiererfahrung haben\ Python auf die dumme Art lernen
REPL und serielle Schnittstelle
Die IDE von OpenMV verfügt über einen seriellen Port-Assistenten für die Verbindung mit OpenMV. Sie kann auch eine Verbindung zu anderen seriellen Ports wie Arduino, Pyboard und esp8266 herstellen.
Trennen Sie zunächst OpenMV von der IDE, sonst kommt es zu Konflikten mit der seriellen Schnittstelle!
Öffnen Sie das Tool in OpenMV → Open Terminal → New Terminal
Geben Sie das Terminal ein
print("hello OpenMV!")
wird angezeigt
hello OpenMV!
Python-Syntax
Ausgabe
Verwenden Sie print(), um eine Zeichenfolge in Klammern hinzuzufügen, um den angegebenen Text auf dem Bildschirm auszugeben. Zum Beispiel Um 'Hallo Welt' auszugeben, lautet der Code wie folgt:
print('hello, world')
hello, world
Die Funktion print() kann auch mehrere durch Kommas "," getrennte Zeichenfolgen akzeptieren, um sie zu einer Zeichenfolge zu verbinden.aus:
print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog
print() gibt nacheinander jede Zeichenfolge aus. Wenn ein Komma vorkommt “,”, wird ein Leerzeichen ausgegeben. Daher wird die Ausgabezeichenfolge wie folgt geschrieben:
The quick brown fox jumps over the lazy dog
print() kann auch ganze Zahlen oder Berechnungsergebnisse drucken:
print(300)
300
print(100 + 200)
300
Daher können wir das Ergebnis der Berechnung von 100+200 schöner ausdrucken:
print('100 + 200 =', 100 + 200)
100 + 200 = 300
Beachten Sie, dass der Python-Interpreter für 100+200 automatisch das Ergebnis 300 berechnet. Allerdings ist '100+200=' eine Zeichenfolge und keine mathematische Formel. Python behandelt es als Zeichenfolge.
Variable
In Python ist das Gleichheitszeichen eine Zuweisungsanweisung. Jeder Datentyp kann wiederholt zugewiesen werden, und es kann sich um eine Variable unterschiedlichen Typs handeln.
a = 123 # a是整数
print(a)
a = 'ABC' # a变为字符串
print(a)
Diese Art von Sprache, in der der Typ der Variablen selbst nicht festgelegt ist, wird als dynamische Sprache bezeichnet, und ihr Gegenstück ist eine statische Sprache. In statischen Sprachen muss der Variablentyp beim Definieren einer Variablen angegeben werden. Wenn der Typ beim Zuweisen eines Werts nicht übereinstimmt, wird ein Fehler gemeldet. Java ist beispielsweise eine statische Sprache und die Zuweisungsanweisung lautet wie folgt (// stellt einen Kommentar dar):
int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量
Aus diesem Grund sind dynamische Sprachen im Vergleich zu statischen Sprachen flexibler.
Liste Liste
Einer der integrierten Datentypen von Python ist eine Liste: Liste. Eine Liste ist eine geordnete Sammlung, deren Elemente jederzeit hinzugefügt und entfernt werden können.\ Um beispielsweise die Namen aller Schüler in der Klasse aufzulisten, können Sie eine Liste verwenden, die Folgendes darstellt:
classmates = ['Michael', 'Bob', 'Tracy']
classmates
['Michael', 'Bob', 'Tracy']
Die Variable Klassenkameraden ist eine Liste. Verwenden Sie die Funktion len(), um die Anzahl der Listenelemente zu ermitteln:
len(classmates)
3
Verwenden Sie den Index, um an jeder Position in der Liste auf das Element zuzugreifen. Denken Sie daran, dass der Index bei 0 beginnt:
classmates[0]
'Michael'
classmates[1]
'Bob'
classmates[2]
'Tracy'
classmates[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Wenn der Index den Bereich überschreitet, meldet Python einen IndexError-Fehler. Stellen Sie daher sicher, dass der Index nicht außerhalb des Bereichs liegt. Denken Sie daran, dass der Index des letzten Elements len\ (classmates) - 1 ist.
Wenn Sie das letzte Element abrufen möchten, können Sie zusätzlich zur Berechnung der Indexposition auch -1 als Index verwenden, um das letzte Element direkt abzurufen:
classmates[-1]
'Tracy'
Analog können Sie den vorletzten und den drittletzten erhalten:
classmates[-2]
'Bob'
classmates[-3]
'Michael'
classmates[-4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Natürlich überschritt der Vierte von unten die Ziellinie.
Eine Liste ist eine veränderbare geordnete Liste, sodass Sie Elemente an das Ende der Liste anhängen können:
classmates.append('Adam')
classmates
['Michael', 'Bob', 'Tracy', 'Adam']
Sie können ein Element auch an einer bestimmten Position einfügen, beispielsweise an der Position mit der Indexnummer 1:
classmates.insert(1, 'Jack')
classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
Um Elemente am Ende der Liste zu löschen, verwenden Sie die Methode pop():
classmates.pop()
'Adam'
classmates
['Michael', 'Jack', 'Bob', 'Tracy']
Um ein Element durch ein anderes zu ersetzen, können Sie es direkt der entsprechenden Indexposition zuweisen:
classmates[1] = 'Sarah'
classmates
['Michael', 'Sarah', 'Tracy']
Auch die Datentypen der Elemente in der Liste können unterschiedlich sein, zum Beispiel:
L = ['Apple', 123, True]
Wenn eine Liste kein Element enthält, handelt es sich um eine leere Liste und ihre Länge beträgt 0:
L = []
len(L)
0
Tupel Tupel
Eine andere Art geordneter Liste heißt Tupel. Tupel ist der Liste sehr ähnlich, aber nach der Initialisierung kann Tupel nicht mehr geändert werden. Beispielsweise werden auch die Namen von Klassenkameraden aufgelistet:
classmates = ('Michael', 'Bob', 'Tracy')
Jetzt kann das Klassentupel nicht geändert werden und es verfügt nicht über Methoden wie append() und insert(). Andere Methoden zum Abrufen von Elementen sind dieselben wie Listen. Sie können normalerweise classmates[0] und classmates[-1] verwenden, sie können jedoch nicht anderen Elementen zugewiesen werden.
Welchen Sinn haben unveränderliche Tupel? Da Tupel unveränderlich sind, ist der Code sicherer. Verwenden Sie nach Möglichkeit Tupel anstelle von Liste.
Tupelfallen: Wenn Sie ein Tupel definieren, müssen die Elemente des Tupels zum Zeitpunkt der Definition bestimmt werden, wie zum Beispiel:
t = (1, 2)
t
(1, 2)
Um jedoch ein Tupel mit nur einem Element zu definieren, gehen Sie wie folgt vor:
t = (1)
t
1
Was definiert ist, ist kein Tupel, t ist eine ganzzahlige Variable und der Wert der Variablen ist 1! Dies liegt daran, dass die Klammern () sowohl ein Tupel als auch eine Klammer in einer mathematischen Formel darstellen können , Python schreibt vor: In diesem Fall wird gemäß Klammern berechnet, und das Berechnungsergebnis ist natürlich 1.
Daher muss beim Definieren eines Tupels mit nur einem Element ein Komma hinzugefügt werden, um Mehrdeutigkeiten zu vermeiden:
t = (1,)
t
(1,)
Wenn Python ein Tupel mit nur einem Element anzeigt, fügt es auch ein Komma hinzu, um zu verhindern, dass Sie es als Klammer im Sinne mathematischer Berechnungen missverstehen.
Bedingtes Urteil
Die vollständige Form der if-Anweisung lautet:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
Zum Beispiel:
age = 20
if age >= 6:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')
Zyklus
Es gibt zwei Arten von Schleifen in Python. Eine davon ist die for...in-Schleife, die nacheinander jedes Element in der Liste oder im Tupel durchläuft.
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
Wenn Sie diesen Code ausführen, werden die einzelnen Namenselemente der Reihe nach gedruckt:
Michael
Bob
Tracy
Die for x in...-Schleife besteht also darin, jedes Element in die Variable x zu ersetzen und dann die eingerückte Blockanweisung auszuführen.
Wenn Sie die Summe ganzer Zahlen von 1 bis 100 berechnen möchten, ist es etwas schwierig, von 1 bis 100 zu schreiben. Glücklicherweise bietet Python eine Funktion range(), die eine Ganzzahlfolge generieren kann, die dann in umgewandelt werden kann eine Liste über die Funktion list(). Beispielsweise ist die von range(5) generierte Sequenz eine ganze Zahl, die bei 0 beginnt und kleiner als 5 ist:
list(range(5))
[0, 1, 2, 3, 4]
Bereich(101) kann eine ganzzahlige Folge von 0-100 generieren, die wie folgt berechnet wird:
sum = 0
for x in range(101):
sum = sum + x
print(sum)
Der zweite Schleifentyp ist eine While-Schleife. Wenn wir beispielsweise die Summe aller ungeraden Zahlen innerhalb von 100 berechnen möchten, können wir dies mit einer While-Schleife erreichen:
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
=====Datentypkonvertierung =====
Zu den häufig verwendeten integrierten Funktionen in Python gehören auch Datentypkonvertierungsfunktionen. Beispielsweise kann die Funktion int() andere Datentypen in Ganzzahlen konvertieren:
>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False
===== Funktionen =====
Um in Python eine Funktion zu definieren, verwenden Sie die def-Anweisung, schreiben Sie den Funktionsnamen, die Klammern, die Parameter in den Klammern und den Doppelpunkt:, schreiben Sie dann den Funktionskörper in den eingerückten Block und verwenden Sie die return-Anweisung, um den Rückgabewert von zurückzugeben die Funktion.
Schreiben wir zunächst eine Funktion, die x2 berechnet:
def power(x):
return x * x
Für die Funktion power(x) ist der Parameter x ein Positionsparameter.
Wenn wir die Potenzfunktion aufrufen, müssen wir einen und nur einen Parameter x übergeben:
power(5)\ 25\ power(15)\ 225
Was ist, wenn wir x3 berechnen möchten? Wir können eine andere Potenz3-Funktion definieren, aber was ist, wenn wir x4, x5 ... berechnen möchten?
Sie haben vielleicht gedacht, dass Sie Potenz(x) in Potenz(x,n) ändern können, um xn zu berechnen, und tun Sie es einfach:
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
Für diese modifizierte Potenz(x,n)-Funktion kann jede n-te Potenz berechnet werden:
power(5, 2)\ 25\ power(5, 3)\ 125
Die modifizierte Potenz(x, n)-Funktion hat zwei Parameter: x und n, die beide Positionsparameter sind. Beim Aufruf der Funktion werden die beiden übergebenen Werte den Parametern x und n in der Reihenfolge ihrer Position zugewiesen.
Scheibe
Das Abrufen einiger Elemente einer Liste oder eines Tupels ist eine sehr häufige Operation. Eine Liste sieht beispielsweise wie folgt aus:
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
Nehmen Sie die ersten drei Elemente und schließen Sie das Slicing mit einer Codezeile ab:
L[0:3]\ ['Michael', 'Sarah', 'Tracy']
L[0:3] bedeutet, von Index 0 bis Index 3 zu beginnen, Index 3 jedoch nicht einzuschließen. Das heißt, die Indizes 0,1,2 sind genau 3 Elemente.
Wenn der erste Index 0 ist, kann er weggelassen werden:
L[:3]\ ['Michael', 'Sarah', 'Tracy']
Sie können auch mit Index 1 beginnen und 2 Elemente herausnehmen:
L[1:3]\ ['Sarah', 'Tracy']
Tupel ist ebenfalls eine Art Liste. Der einzige Unterschied besteht darin, dass Tupel unveränderlich ist. Daher können Tupel auch Slicing-Operationen verwenden, das Ergebnis der Operation ist jedoch immer noch ein Tupel:
(0, 1, 2, 3, 4, 5)[:3]\ (0, 1, 2)
Die Zeichenfolge „xxx“ kann auch als Liste betrachtet werden, jedes Element ist ein Zeichen. Daher können Strings auch zerteilt werden, das Ergebnis ist aber immer noch ein String:
'ABCDEFG'[:3]\ 'ABC'
Objekt
Python ist eine objektorientierte Programmierung, beispielsweise ein LED-Licht
from pyb import LED
red_led = LED(1)
red_led.on()
LED ist eine Klasse, red_led ist ein Objekt, und Sie können Operationen an diesem Objekt ausführen, z. B. Einschalten, Ausschalten und Anzeigen von Werten.