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


推薦閱讀:

TAG:嵌入式開發 | 嵌入式設計 |