micropython是啥 知乎_micropython入门教程
目錄
1、microPython簡(jiǎn)介
Damien George是一名計(jì)算機(jī)工程師,他每天都要使用Python語(yǔ)言工作,同時(shí)也在做一些機(jī)器人項(xiàng)目。有一天,他突然冒出了一個(gè)想法:能否用Python語(yǔ)言來(lái)控制單片機(jī),進(jìn)行實(shí)現(xiàn)對(duì)機(jī)器人的操控呢?
要知道,Python是一款比較容易上手的腳本語(yǔ)言,而且有強(qiáng)大的社區(qū)支持,一些非計(jì)算機(jī)專業(yè)領(lǐng)域的人都選它作為入門語(yǔ)言。遺憾的是,它不能實(shí)現(xiàn)一些非常底層的操控,所以在硬件領(lǐng)域并不起眼。
Damien為了突破這種限制,他花費(fèi)了六個(gè)月的時(shí)間來(lái)打造Micro Python。它基于ANSI C,語(yǔ)法跟Pyton 3基本一致,擁有自家的解析器、編譯器、虛擬機(jī)和類庫(kù)等。目前他支持很多32-bit處理器,比如說(shuō)STM32系列,esp8266,esp32,rtl8195a,nrf51822等。
借助Micro Python,用戶完全可以通過(guò)Python腳本語(yǔ)言實(shí)現(xiàn)硬件底層的訪問(wèn)和控制,比如說(shuō)控制LED燈泡、LCD顯示器、讀取電壓、控制電機(jī)、訪問(wèn)SD卡、訪問(wèn)網(wǎng)絡(luò)、訪問(wèn)藍(lán)牙、讀取傳感器等。
2、本文目標(biāo)
閱讀本文后,可以對(duì)micropython有個(gè)初步了解,主要涉及變量數(shù)據(jù)類型和基礎(chǔ)語(yǔ)法。為了防止枯燥,深入的語(yǔ)法內(nèi)容我們會(huì)結(jié)合后面的例子給大家詳細(xì)講解,建議手動(dòng)敲入代碼進(jìn)行實(shí)際操作,以加深理解。
3、變量數(shù)據(jù)類型
字符型
字符型是以單引號(hào)'或雙引號(hào)"括起來(lái)的任意文本,比如'abc',"xyz"等等。' '或 " "本身只是一種表示字符的符號(hào),不是字符串的一部分,因此,字符串'abc'只有a,b,c這3個(gè)字符。如果'本身也是一個(gè)字符,那就可以用""括起來(lái),比如"I'm
OK"包含的字符是I,',m,空格,O,K這6個(gè)字符,示例:
>>>str=“hello DFRobot”
>>>Print(str)
hello DFRobot
str是定義的一個(gè)字符串變量并賦值為hello
DFRobot,然后輸出該字符串。
布爾類型
一個(gè)布爾值只有兩種值,要么是True 、要么是False(注意首字母大寫)。
應(yīng)用例子:
>>>True
True
>>>3>2
True
>>>5>7
False
and運(yùn)算是與運(yùn)算,只有所有都為True,and運(yùn)算結(jié)果才是True
>>>True
and True
True
>>>True
and False
False
or運(yùn)算是或運(yùn)算,只要其中有一個(gè)為True,or運(yùn)算結(jié)果就是True
>>>True
or True
True
>>>True
or False
True
not運(yùn)算是非運(yùn)算,它是一個(gè)單目運(yùn)算符,把True變成False,False變成True
>>>not True
False
>>>not 1>5
True
布爾值經(jīng)常用在條件判斷中,eg:
>>>def int(age):
if age>=18:
print(‘a(chǎn)dult’)
else:
print(‘teenager’)
整型
創(chuàng)建一個(gè)新整型變量和給變量賦值是相同的過(guò)程,a = 123 或 b = -123 等號(hào)左邊是變量名,右邊是要賦的值,就是這么簡(jiǎn)單。自然賦值時(shí)候的數(shù)據(jù)要是整數(shù)才行,整數(shù)簡(jiǎn)單理解為(正整數(shù)和負(fù)整數(shù)),micropython目前可以支持的整型數(shù)據(jù)類型變量前的操作符有:加(+)、減(-)、乘(×)、除(/)和冪(**)。
浮點(diǎn)型
浮點(diǎn)數(shù)也就是小數(shù),之所以稱為浮點(diǎn)數(shù),是因?yàn)榘凑湛茖W(xué)記數(shù)法表示時(shí),一個(gè)浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置是可變的,比如,1.23×109和12.3×108是完全相等的。浮點(diǎn)數(shù)可以用數(shù)學(xué)寫法,如1.23,3.14,-9.01,等等。但是對(duì)于很大或很小的浮點(diǎn)數(shù),就必須用科學(xué)計(jì)數(shù)法表示,把10用e替代,1.23×109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。如果以上你不能理解,那么就一句話---浮點(diǎn)數(shù)就是不精確的小數(shù)。浮點(diǎn)數(shù)運(yùn)算可能會(huì)有四舍五入的誤差。
>>>pi=3.14
>>>print(pi)
3.14
在不同的平臺(tái)下(比如:esp32、esp8266、ameba等),輸出的π值可能會(huì)不同。
元組(Tuple)
tuple是一種有序列表,tuple和list非常類似,但是tuple一旦初始化就不能修改,顯示只有1個(gè)元素的tuple時(shí),會(huì)加一個(gè)逗號(hào)。eg:
>>>t=(1,)
>>>t
(1,)
如上我們定義的就是一個(gè)tuple,t=(1,)。
如果沒(méi)有逗號(hào),這定義的就不是tuple,eg:
>>>t=(1)
>>>t
1
當(dāng)把兩個(gè)元祖合在一起輸出時(shí),它的輸出結(jié)果是兩個(gè)元祖所有的元素,eg:
>>>t1=(1,2,3)
>>>t2 = (4,5,6)
>>>Print(t1+t2)
(1,2,3,4,5,6)
列表(List)
list內(nèi)容可更改,list是一種有序的集合,可以隨時(shí)添加和刪除其中的元素
>>>l=[1,2,3,4]
>>>print(l)
[1,2,3,4]
定義一個(gè)l=[1,2,3,4]的list,
變量l就是一個(gè)list,用len()函數(shù)可以獲得list元素的個(gè)數(shù)
>>>len(l)
4
用索引來(lái)訪問(wèn)list中每一個(gè)位置的元素,記得索引是從0開(kāi)始的。
>>>l[2]
3
>>>l[0]
1
要把某個(gè)元素替換成別的元素,可以直接賦值給對(duì)應(yīng)的索引位置。
>>>l[1]=9
>>>print(l)
[1,9,3,4]
list是一個(gè)可變的有序表, 可以把元素插入到指定的位置,比如索引號(hào)為1的位置,insert(i,x)在位置i插入x,其余元素向后推,如果i大于列表長(zhǎng)度,就在最后添加,如果i小于0,就在最開(kāi)始添加。
>>>l.insert(1,6)
>>>print(l)
[1,6,2,3,4]
要?jiǎng)h除指定位置的元素,用pop(i)方法,其中i是索引位置。
>>>l.pop(2)
3
>>>print(l)
[1,2,4]
字典(Dict)
microPython內(nèi)置了字典:dict的支持,dict全稱dictionary,在C++和java等其他語(yǔ)言中也稱為map,使用鍵-值(key-value)存儲(chǔ),一般在內(nèi)存中以紅黑樹(shù)方式存儲(chǔ),具有極快的查找速度。
>>>d={‘df’:4, ’yu’:18, ’wu’:15}
>>>d[‘yu’]
18
dict指的是字典,而在使用的時(shí)候,如果我們直接用dict來(lái)表示字典,這樣顯得有點(diǎn)麻煩,所以我們就用d來(lái)代表dict,當(dāng)然如果覺(jué)得不麻煩,也可以直接用dict。
把數(shù)據(jù)放入dict的方法,除了初始化時(shí)指定外,還可以通過(guò)key放入:
>>>d[‘li’]=12
>>>d=[‘li’]
12
由于一個(gè)key只能對(duì)應(yīng)一個(gè)value,所以,多次對(duì)一個(gè)key放入value,后面的值會(huì)把前面的值沖掉
>>>d[‘jack’]=10
>>>d[‘jack’]
10
>>> d[‘jack’]=9
>>> d[‘jack’]
9
要?jiǎng)h除一個(gè)key,用pop(key)方法,對(duì)應(yīng)的value也會(huì)從dict中刪除
>>>d.pop(‘yu’)
18
>>>d
{‘df’:4’, ’wu’:15}
引用
對(duì)于不可變的對(duì)象(包括:int、字符串(string)、float、(數(shù)值型number)、元組),a作為b的一個(gè)拷貝被創(chuàng)建,a和b將指向不同的內(nèi)存地址,a和b相互獨(dú)立,
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,輸出b的值就是I am ouki,此時(shí)a的值依然是I am ouki,我們?cè)俳oa賦一個(gè)新的值a=”hello
DFRobot”,然后我們?cè)賮?lái)輸出b,b的值不會(huì)改變,依然是I am ouki。
對(duì)于可變的對(duì)象(包括:字典型(dictionary)、列表型(list)),a作為b的一個(gè)引用被創(chuàng)建,a和b的元素公用相同的內(nèi)存地址,a和b的元素共享。
4.基礎(chǔ)語(yǔ)法
分號(hào)和冒號(hào)
每行不需要寫分號(hào)結(jié)束,和其他語(yǔ)言有些不一樣。當(dāng)然,你寫分號(hào)也沒(méi)有問(wèn)題,對(duì)于條件和函數(shù),后面要緊跟冒號(hào)。如果在條件和函數(shù)后沒(méi)有緊跟冒號(hào),就會(huì)報(bào)如下錯(cuò)誤:
循環(huán)
for循環(huán)
for循環(huán)可以遍歷任何序列的項(xiàng)目,如一個(gè)列表或者一個(gè)字符串,for循環(huán)的語(yǔ)法格式如下:
for
iterating_var in sequence:
statements(s)
eg:
>>>for i in range(5):
. . . print(i)
0
1
2
3
4
while循環(huán)
while 語(yǔ)句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復(fù)處理的相同任務(wù)。其基本形式為:
while
判斷條件:
執(zhí)行語(yǔ)句….
eg:
>>>i=9
>>>while(i>0):
. . . print(i)
. . . i-=1
9
8
7
6
5
4
3
2
1
執(zhí)行語(yǔ)句可以是單個(gè)語(yǔ)句或語(yǔ)句塊。判斷條件可以是任何表達(dá)式,任何非零、或非空(null)的值均為true。當(dāng)判斷條件假false時(shí),循環(huán)結(jié)束。
函數(shù)
在microPython中,定義一個(gè)函數(shù)要使用def語(yǔ)句,依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào):,然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語(yǔ)句返回。我們以自定義一個(gè)求絕對(duì)值的my_abs和一個(gè)求和的add函數(shù)為例。
>>>def my_abs(x):
. . . if x>=0:
. . . return x
. . . else:
. . . return -x
. . .
>>>my_abs(5)
5
>>>my_abs(-6)
6
函數(shù)定義結(jié)束后需要按兩次回車重新回到>>>提示符下:
>>>def add(a,b):
. . . retrun a+b
. . .
>>>add(4,2)
6
總結(jié)
以上是生活随笔為你收集整理的micropython是啥 知乎_micropython入门教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python语言语句快的标记是什么_一文
- 下一篇: python3默认使用的编码是_pyth