micropython入門教程
目錄
目錄.. 1
更新歷史.. 2
microPython簡介.. 2
本文目標.. 2
變數數據類型.. 2
字元型... 3
布爾類型... 3
整型... 3
浮點型... 4
元組(Tuple) 4
列表(List) 4
字典(Dict) 5
引用... 6
基礎語法.. 6
分號和冒號... 7
循環... 7
函數... 8
1、microPython簡介
Damien George是一名計算機工程師,他每天都要使用Python語言工作,同時也在做一些機器人項目。有一天,他突然冒出了一個想法:能否用Python語言來控制單片機,進行實現對機器人的操控呢?
要知道,Python是一款比較容易上手的腳本語言,而且有強大的社區支持,一些非計算機專業領域的人都選它作為入門語言。遺憾的是,它不能實現一些非常底層的操控,所以在硬體領域並不起眼。
Damien為了突破這種限制,他花費了六個月的時間來打造Micro Python。它基於ANSI C,語法跟Pyton 3基本一致,擁有自家的解析器、編譯器、虛擬機和類庫等。目前他支持很多32-bit處理器,比如說STM32系列,esp8266,esp32,rtl8195a,nrf51822等。
藉助Micro Python,用戶完全可以通過Python腳本語言實現硬體底層的訪問和控制,比如說控制LED燈泡、LCD顯示器、讀取電壓、控制電機、訪問SD卡、訪問網路、訪問藍牙、讀取感測器等。
2、本文目標
閱讀本文後,可以對micropython有個初步了解,主要涉及變數數據類型和基礎語法。為了防止枯燥,深入的語法內容我們會結合後面的例子給大家詳細講解,建議手動敲入代碼進行實際操作,以加深理解。
3、變數數據類型
字元型
字元型是以單引號或雙引號"括起來的任意文本,比如abc,"xyz"等等。 或 " "本身只是一種表示字元的符號,不是字元串的一部分,因此,字元串abc只有a,b,c這3個字元。如果本身也是一個字元,那就可以用""括起來,比如"ImOK"包含的字元是I,,m,空格,O,K這6個字元,示例:
>>>str=「hello DFRobot」
>>>Print(str)
hello DFRobot
str是定義的一個字元串變數並賦值為helloDFRobot,然後輸出該字元串。
布爾類型
一個布爾值只有兩種值,要麼是True 、要麼是False(注意首字母大寫)。
應用例子:
>>>True
True
>>>3>2
True
>>>5>7
False
and運算是與運算,只有所有都為True,and運算結果才是True
>>>Trueand True
True
>>>Trueand False
False
or運算是或運算,只要其中有一個為True,or運算結果就是True
>>>Trueor True
True
>>>Trueor False
True
not運算是非運算,它是一個單目運算符,把True變成False,False變成True
>>>not True
False
>>>not 1>5
True
布爾值經常用在條件判斷中,eg:
>>>def int(age):
if age>=18:
print(『adult』)
else:
print(『teenager』)
整型
創建一個新整型變數和給變數賦值是相同的過程,a = 123 或 b = -123 等號左邊是變數名,右邊是要賦的值,就是這麼簡單。自然賦值時候的數據要是整數才行,整數簡單理解為(正整數和負整數),micropython目前可以支持的整型數據類型變數前的操作符有:加(+)、減(-)、乘(×)、除(/)和冪(**)。
浮點型
浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,比如,1.23×10
9
和12.3×10
8
是完全相等的。浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23×10
9
就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。如果以上你不能理解,那麼就一句話---浮點數就是不精確的小數。浮點數運算可能會有四捨五入的誤差。
>>>pi=3.14
>>>print(pi)
3.14
在不同的平台下(比如:esp32、esp8266、ameba等),輸出的π值可能會不同。
元組(Tuple)
tuple是一種有序列表,tuple和list非常類似,但是tuple一旦初始化就不能修改,顯示只有1個元素的tuple時,會加一個逗號。eg:
>>>t=(1,)
>>>t
(1,)
如上我們定義的就是一個tuple,t=(1,)。
如果沒有逗號,這定義的就不是tuple,eg:
>>>t=(1)
>>>t
1
當把兩個元祖合在一起輸出時,它的輸出結果是兩個元祖所有的元素,eg:
>>>t1=(1,2,3)
>>>t2 = (4,5,6)
>>>Print(t1+t2)
(1,2,3,4,5,6)
列表(List)
list內容可更改,list是一種有序的集合,可以隨時添加和刪除其中的元素
>>>l=[1,2,3,4]
>>>print(l)
[1,2,3,4]
定義一個l=[1,2,3,4]的list,
變數l就是一個list,用len()函數可以獲得list元素的個數
>>>len(l)
4
用索引來訪問list中每一個位置的元素,記得索引是從0開始的。
>>>l[2]
3
>>>l[0]
1
要把某個元素替換成別的元素,可以直接賦值給對應的索引位置。
>>>l[1]=9
>>>print(l)
[1,9,3,4]
list是一個可變的有序表, 可以把元素插入到指定的位置,比如索引號為1的位置,insert(i,x)在位置i插入x,其餘元素向後推,如果i大於列表長度,就在最後添加,如果i小於0,就在最開始添加。
>>>l.insert(1,6)
>>>print(l)
[1,6,2,3,4]
要刪除指定位置的元素,用pop(i)方法,其中i是索引位置。
>>>l.pop(2)
3
>>>print(l)
[1,2,4]
字典(Dict)
microPython內置了字典:dict的支持,dict全稱dictionary,在C++和java等其他語言中也稱為map,使用鍵-值(key-value)存儲,一般在內存中以紅黑樹方式存儲,具有極快的查找速度。
>>>d={『df』:4, 』yu』:18, 』wu』:15}
>>>d[『yu』]
18
dict指的是字典,而在使用的時候,如果我們直接用dict來表示字典,這樣顯得有點麻煩,所以我們就用d來代表dict,當然如果覺得不麻煩,也可以直接用dict。
把數據放入dict的方法,除了初始化時指定外,還可以通過key放入:
>>>d[『li』]=12
>>>d=[『li』]
12
由於一個key只能對應一個value,所以,多次對一個key放入value,後面的值會把前面的值衝掉
>>>d[『jack』]=10
>>>d[『jack』]
10
>>> d[『jack』]=9
>>> d[『jack』]
9
要刪除一個key,用pop(key)方法,對應的value也會從dict中刪除
>>>d.pop(『yu』)
18
>>>d
{『df』:4』, 』wu』:15}
引用
對於不可變的對象(包括:int、字元串(string)、float、(數值型number)、元組),a作為b的一個拷貝被創建,a和b將指向不同的內存地址,a和b相互獨立,
eg:
>>>a=」I am ouki」
>>>b=a
>>>print(b)
I am ouki
>>>a=」hello DFRobot」
>>>Print(b)
I am ouki
我們定義a=」 I am ouki」,然後把a的值賦給b,輸出b的值就是I am ouki,此時a的值依然是I am ouki,我們再給a賦一個新的值a=」helloDFRobot」,然後我們再來輸出b,b的值不會改變,依然是I am ouki。
對於可變的對象(包括:字典型(dictionary)、列表型(list)),a作為b的一個引用被創建,a和b的元素公用相同的內存地址,a和b的元素共享。
4.基礎語法
分號和冒號
每行不需要寫分號結束,和其他語言有些不一樣。當然,你寫分號也沒有問題,對於條件和函數,後面要緊跟冒號。如果在條件和函數後沒有緊跟冒號,就會報如下錯誤:
循環
for循環
for循環可以遍歷任何序列的項目,如一個列表或者一個字元串,for循環的語法格式如下:
foriterating_var in sequence:
statements(s)
eg:
>>>for i in range(5):
. . . print(i)
0
1
2
3
4
while循環
while 語句用於循環執行程序,即在某條件下,循環執行某段程序,以處理需要重複處理的相同任務。其基本形式為:
while判斷條件:
執行語句….
eg:
>>>i=9
>>>while(i>0):
. . . print(i)
. . . i-=1
9
8
7
6
5
4
3
2
1
執行語句可以是單個語句或語句塊。判斷條件可以是任何表達式,任何非零、或非空(null)的值均為true。當判斷條件假false時,循環結束。
函數
在microPython中,定義一個函數要使用def語句,依次寫出函數名、括弧、括弧中的參數和冒號:,然後,在縮進塊中編寫函數體,函數的返回值用return語句返回。我們以自定義一個求絕對值的my_abs和一個求和的add函數為例。
>>>def my_abs(x):
. . . if x>=0:
. . . return x
. . . else:
. . . return -x
. . .
>>>my_abs(5)
5
>>>my_abs(-6)
6
函數定義結束後需要按兩次回車重新回到>>>提示符下:
>>>def add(a,b):
. . . retrun a+b
. . .
>>>add(4,2)
6
推薦閱讀: