Conoscenza di base di Python
Appendice uno del tutorial video: sintassi Python: https://singtown.com/learn/50061/
Vantaggi dell'utilizzo di Python
OpenMV può utilizzare Python per lo sviluppo secondario. Ci sono diversi vantaggi:
- Facile da iniziare
- Non è necessario considerare l'applicazione e il rilascio della memoria
- Esistono molte librerie MicroPython utilizzabili direttamente (non compatibili con i moduli Python su PC)
- Il team di sviluppo ha sviluppato vari algoritmi e moduli di OpenMV che possono essere richiamati
Python è un linguaggio molto comunemente usato ed è ampiamente utilizzato nell'elaborazione delle immagini, nell'apprendimento automatico e nella programmazione di rete. E Python è un linguaggio molto semplice con cui iniziare. Se hai basi di programmazione in altri linguaggi (come C, C++, Java), sarà più facile iniziare.
Consigliato se hai precedenti esperienze di programmazione in C/C++/Java (o qualsiasi altro linguaggio)\ Tutorial Python di Liao Xuefeng
Consigliato se non hai alcuna esperienza precedente di programmazione\ Impara Python in modo stupido
REPL e porta seriale
L'IDE di OpenMV viene fornito con un assistente per la porta seriale per la connessione a OpenMV e può anche connettersi ad altre porte seriali, come Arduino, pyboard ed esp8266.
Innanzitutto, disconnetti OpenMV dall'IDE, altrimenti la porta seriale andrà in conflitto!
Apri Strumenti in OpenMV → Apri terminale → Nuovo terminale
Entra nel terminale
print("hello OpenMV!")
verrà visualizzato
hello OpenMV!
Sintassi Python
produzione
Utilizzare print() per aggiungere una stringa tra parentesi per visualizzare sullo schermo il testo specificato. Ad esempio, per restituire "ciao, mondo", il codice è il seguente:
print('hello, world')
hello, world
La funzione print() può anche accettare più stringhe separate da virgole "," per visualizzarle in serie:
print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog
print() stamperà ogni stringa a turno. Quando incontra una virgola ",", genererà uno spazio. Pertanto, la stringa di output è scritta in questo modo:
The quick brown fox jumps over the lazy dog
print() può anche stampare numeri interi o risultati di calcoli:
print(300)
300
print(100 + 200)
300
Pertanto, possiamo stampare il risultato del calcolo di 100 + 200 in modo più bello:
print('100 + 200 =', 100 + 200)
100 + 200 = 300
Nota che per 100 + 200, l'interprete Python calcola automaticamente il risultato
- Tuttavia, '100 + 200 =' è una stringa e non una formula matematica, e Python la tratta come una stringa.
variabile
In Python, il segno uguale = è un'istruzione di assegnazione. Qualsiasi tipo di dati può essere assegnato a una variabile. La stessa variabile può essere assegnata ripetutamente e può essere una variabile di tipi diversi, ad esempio:
a = 123 # a是整数
print(a)
a = 'ABC' # a变为字符串
print(a)
Questo tipo di linguaggio il cui tipo di variabile non è fisso è chiamato linguaggio dinamico e la sua controparte è un linguaggio statico. Nei linguaggi statici, il tipo di variabile deve essere specificato quando si definisce una variabile. Se il tipo non corrisponde quando si assegna un valore, verrà segnalato un errore. Ad esempio, Java è un linguaggio statico e l'istruzione di assegnazione è la seguente (// rappresenta un commento):
int a = 123; // a是整数类型变量
a = "ABC"; // 错误:不能把字符串赋给整型变量
Rispetto ai linguaggi statici, i linguaggi dinamici sono per questo motivo più flessibili.
elenco elenco
Uno dei tipi di dati incorporati di Python è una lista: list. Una lista è una raccolta ordinata in cui è possibile aggiungere e rimuovere elementi in qualsiasi momento.\ Ad esempio, per elencare i nomi di tutti gli studenti della classe, puoi utilizzare un elenco per rappresentarlo:
classmates = ['Michael', 'Bob', 'Tracy']
classmates
['Michael', 'Bob', 'Tracy']
La variabile compagni di classe è una lista. Utilizza la funzione len() per ottenere il numero di elementi della lista:
len(classmates)
3
Utilizza l'indice per accedere all'elemento in ogni posizione nell'elenco Ricorda che l'indice inizia da 0:
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
Quando l'indice supera l'intervallo, Python riporterà un IndexError, quindi assicurati che l'indice non esca dall'intervallo. Ricorda che l'indice dell'ultimo elemento è len(classmates) - 1.
Se vuoi ottenere l'ultimo elemento, oltre a calcolare la posizione dell'indice, puoi anche utilizzare -1 come indice per ottenere direttamente l'ultimo elemento:
classmates[-1]
'Tracy'
Per analogia, puoi ottenere il penultimo e il terzultimo:
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
Ovviamente il 4° dal basso ha tagliato il traguardo.
L'elenco è un elenco ordinato modificabile, quindi puoi aggiungere elementi alla fine dell'elenco:
classmates.append('Adam')
classmates
['Michael', 'Bob', 'Tracy', 'Adam']
Puoi anche inserire l'elemento in una posizione specifica, come la posizione con numero di indice 1:
classmates.insert(1, 'Jack')
classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
Per eliminare gli elementi alla fine dell'elenco, utilizzare il metodo pop():
classmates.pop()
'Adam'
classmates
['Michael', 'Jack', 'Bob', 'Tracy']
Per sostituire un elemento con un altro elemento, puoi assegnarlo direttamente alla posizione dell'indice corrispondente:
classmates[1] = 'Sarah'
classmates
['Michael', 'Sarah', 'Tracy']
Anche i tipi di dati degli elementi della lista possono essere diversi, ad esempio:
L = ['Apple', 123, True]
Se non ci sono elementi in una lista, è una lista vuota e la sua lunghezza è 0:
L = []
len(L)
0
tupla tupla
Un altro tipo di elenco ordinato è chiamato tupla. La tupla è molto simile alla lista, ma una volta inizializzata, la tupla non può essere modificata. Ad esempio, vengono elencati anche i nomi dei compagni di classe:
classmates = ('Michael', 'Bob', 'Tracy')
Ora, la tupla delle classi non può essere modificata e non ha metodi come append() e insert(). Altri metodi per ottenere elementi sono gli stessi degli elenchi. È possibile utilizzare normalmente le classi[0] e le classi[-1], ma non possono essere assegnate ad altri elementi.
Qual è lo scopo delle tuple immutabili? Poiché le tuple sono immutabili, il codice è più sicuro. Se possibile, usa la tupla invece della lista.
Trappole della tupla: quando si definisce una tupla, gli elementi della tupla devono essere determinati al momento della definizione, come ad esempio:
t = (1, 2)
t
(1, 2)
Tuttavia, per definire una tupla con solo 1 elemento, se la definisci in questo modo:
t = (1)
t
1
Ciò che viene definito non è una tupla, t è una variabile intera e il valore della variabile t è 1! Questo perché le parentesi () possono rappresentare sia tuple che parentesi nelle formule matematiche, il che crea ambiguità. Pertanto, Python stabilisce che in questo caso i calcoli vengono eseguiti secondo le parentesi e il risultato del calcolo è naturalmente 1 .
Pertanto, è necessario aggiungere una virgola quando si definisce una tupla con un solo elemento per eliminare l'ambiguità:
t = (1,)
t
(1,)
Quando Python visualizza una tupla con un solo elemento, aggiunge anche una virgola per evitare di fraintenderla come una parentesi nel senso dei calcoli matematici.
Giudizio condizionale
La forma completa dell'istruzione if è:
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
Per esempio:
age = 20
if age >= 6:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')
ciclo
Ci sono due tipi di cicli in Python. Uno è il ciclo for...in, che ripete a turno ogni elemento nella lista o nella tupla. Vedi l'esempio:
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
L'esecuzione di questo codice stamperà a turno ciascun elemento dei nomi:
Michael
Bob
Tracy
Quindi il ciclo for x in... sostituisce semplicemente ogni elemento nella variabile x e quindi esegue l'istruzione del blocco rientrato.
Se vuoi calcolare la somma dei numeri interi da 1 a 100, è un po' difficile scrivere da 1 a 100. Fortunatamente, Python fornisce una funzione range() che può generare una sequenza di interi, che può poi essere convertita in un elenco tramite la funzione list(). Ad esempio, la sequenza generata da range(5) è un numero intero che inizia da 0 e inferiore a 5:
list(range(5))
[0, 1, 2, 3, 4]
range(101) può generare una sequenza di numeri interi da 0 a 100, calcolata come segue:
sum = 0
for x in range(101):
sum = sum + x
print(sum)
Il secondo tipo di ciclo è un ciclo while. Ad esempio, se vogliamo calcolare la somma di tutti i numeri dispari entro 100, possiamo utilizzare un ciclo while per ottenere questo risultato:
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
===== Conversione del tipo di dati =====
Le funzioni comunemente usate integrate in Python includono anche funzioni di conversione del tipo di dati. Ad esempio, la funzione int() può convertire altri tipi di dati in numeri interi:
>>> 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
===== Funzioni =====
In Python, per definire una funzione, utilizzare l'istruzione def, scrivere il nome della funzione, le parentesi, i parametri tra parentesi e i due punti:, quindi scrivere il corpo della funzione nel blocco rientrato e utilizzare l'istruzione return per restituire il valore restituito di la funzione.
Scriviamo prima una funzione che calcola x2:
def power(x):
return x * x
Per la funzione power(x), il parametro x è un parametro posizionale.
Quando chiamiamo la funzione power, dobbiamo passare uno e un solo parametro x:
potere(5)\ 25\ potere(15)\ 225
E se volessimo calcolare x3? Puoi definire un'altra funzione power3, ma cosa succede se vuoi calcolare x4, x5...? Non possiamo definire infinite funzioni.
Potresti aver pensato di poter cambiare power(x) in power(x, n) per calcolare xn, e farlo semplicemente:
def power(x, n):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
Per questa funzione potenza(x, n) modificata, è possibile calcolare qualsiasi potenza n-esima:
potenza(5, 2)\ 25\ potere(5, 3)\ 125
La funzione modificata power(x, n) ha due parametri: x e n. Entrambi i parametri sono parametri posizionali Quando si chiama la funzione, i due valori passati vengono assegnati ai parametri x e n in ordine di posizione. .
fetta
Recuperare alcuni elementi di una lista o di una tupla è un'operazione molto comune. Ad esempio, un elenco è il seguente:
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
Prendi i primi 3 elementi e completa lo slicing con una riga di codice:
L[0:3]\ ['Michael', 'Sarah', 'Tracy']
L[0:3] significa iniziare dall'indice 0 all'indice 3, ma escluso l'indice 3. Cioè, gli indici 0, 1, 2 sono esattamente 3 elementi.
Se il primo indice è 0, può anche essere omesso:
L[:3]\ ['Michael', 'Sarah', 'Tracy']
Puoi anche iniziare dall'indice 1 ed estrarre 2 elementi:
L[1:3]\ ['Sarah', 'Tracy']
Anche la tupla è una sorta di lista, l'unica differenza è che la tupla è immutabile. Pertanto, le tuple possono anche essere gestite mediante l'affettamento, ma il risultato dell'operazione è pur sempre una tupla:
(0, 1, 2, 3, 4, 5)[:3]\ (0, 1, 2)
La stringa 'xxx' può anche essere considerata come una lista, ogni elemento è un carattere. Pertanto, anche le stringhe possono essere suddivise, ma il risultato è comunque una stringa:
'ABCDEFG'[:3]\ 'ABC'
oggetto
Python è una programmazione orientata agli oggetti, come una luce LED
from pyb import LED
red_led = LED(1)
red_led.on()
LED è una classe, red_led è un oggetto e puoi operare su questo oggetto, come accenderlo, spegnerlo e visualizzarne il valore.