KIKIYA 发表于 2020-2-17 12:36:06

第1章 MicroPython 简介与语法

### 第1章 MicroPython
#### 1.1 MicroPython简介

下面是网上关于MicroPython的介绍。

Damien George是一名计算机工程师,他每天都要使用Python语言工作,同时也在做一些机器人项目。有一天,他突然冒出了一个想法:能否用Python语言来控制单片机,进而实现对机器人的操纵呢? 要知道,Python是一款比较容易上手的脚本语言,而且有强大的社区支持,一些非计算机专业领域的人都选它作为入门语言。遗憾的是,它不能实现非常底层的操控,所以在硬件领域并不起眼。

Damien为了突破这种限制,他花了六个月的时间来打造MicroPython。它基于ANSI C标准,语法跟Python 3基本一致,拥有自家的解析器、编译器、虚拟机和类库。

微控制器通常以C编程,可以直接访问和控制寄存器来使用外围设备,为目标微控制器进行交叉编译和构建固件代码,并使用合适的编程器进行烧录,而MicroPython集成了所有这些步骤。借助MicroPython,用户完全可以通过Python脚本语言实现硬件底层的访问和控制,比如说控制LED灯泡、LCD显示器、读取电压、控制电机、访问SD卡等。

与桌面版本的Python不同,MicroPython是微控制器的精简版本,因此它并非支持所有Python的库和功能。当你学过Python后再学习MicroPython是很容易的事,但不是所有的Python语法都适用于MicroPython,这点要尤为注意。 点击查看(http://docs.micropython.org/en/latest/genrst/core_language.html)。
#### 1.2 MicroPython语法
##### 1.2.1.1. print 输出

使用print()函数可以将数据打印到终端。

print()函数可以直接在终端执行,也可以写在Python文件中,通过运行文件来执行。例如

在终端使用:


在文件中使用:


##### 注意:
   当我们在uPyCraft交互环境下编写代码时,>>>是MicroPython解释器的提示符,不是代码的一部分。前面没有>>>或...的“Hello World!”为程序运行的结果。
###### print()函数中可以有多个字符串,用逗号“,”隔开。
示例:
```
>>> print("hello", "world!")
hello world!
```

###### print 默认输出换行,如果在末尾加上end=" "则不换行。
示例:
```
print("hello", end=" ")
print("world")
```

运行结果:
```
hello world
```
##### 1.2.1.2. 注释
代码中的注释有助于我们理解代码,在程序运行时,uPyCraft会忽略注释。
单行注释
MicroPython中的单行注释以#开头,后面的文字直到行尾都算注释。
示例:
```
>>> print("hello world") #This is a annotation
hello world
```
###### 多行注释
如果要进行多行的注释,可以使用多个#号, 三个单引号(''')或三个双引号(""")。
示例:
```
'''
This is a multi-line comment.
Prints hello world.
'''
print("hello world")
```
##### 1.2.1.3. 缩进
###### MicroPython使用缩进来区分不同的代码块,不需要使用大括号 {} 。
```
if True:
print ("True")
else:
print ("False")
```
###### 缩进的空格数是可变的,但是同一代码块缩进必须一致。
示例:
```
if True:
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False")    # 缩进不一致,会导致运行错误
```
###### 以上程序由于缩进不一致,执行后会出现类似以下错误
```
*test.py:6:2: unexpected indent
print ("False")    # 缩进不一致,会导致运行错误
^
syntax finish.
```
##### 1.2.1.4. help() 函数
###### 调用 MicroPython的 help() 函数查看一些基本信息。
示例:
```
>>> help(max)#查看max()函数的基本信息
object <function> is of type function
>>>
>>> help(sys) #查看sys模块的一些信息
object <module 'sys'> is of type module
__name__ -- sys
path -- ['', '/lib']
argv -- []
version -- 3.4.0
version_info -- (3, 4, 0)
implementation -- (name='mi 0>
stdout -- <io.FileIO 1>
stderr -- <io.FileIO 2>
modules -- {'flashbdev': <module 'flashbdev'>}
print_exception -- <function>
>>>
>>> help(sys.path)
object ['', '/lib'] is of type list
append -- <ert -- <function>
pop -- <function>
remove -- <function>
reverse -- <function>
sort -- <function>
```
##### 1.2.1.5. 常量、变量
###### 常量
   如10、100这样的数值或“hello world!”这样的字符串,就是常量。常量的值不可变,MicroPython提供了一个const关键字,表示其值不可更改。
示例:
```
from micropython import const

a = const(33)
print(a)
```
###### 变量
   创建一个变量很简单,只需要起个名,给他赋予一个值,在赋值的时候不需要指定变量的数据类型,因为变量是一个引用,它通过赋值来访问不同数据类型的对象。这点与其他语言中的变量不同,要注意(关于数据类型在下一小节讲)。
示例:
```
>>> a = "abcd" #引用a指向一个字符串对象“abcd”
>>> print(a)
abcd
>>> a = 32 #引用a指向一个整型对象
>>> print(a2)
32
>>> a1 = a #a1指向引用a指向的对象
>>> print(a)
32
```
   给变量命名必须遵循以下规则:
   ◆变量名只能包含数字、字母、下划线
   ◆变量名的第一个字符必须是字母或下划线
   ◆变量名区分大小写
持续更新

kylinpoet 发表于 2020-2-17 20:32:08

这个好,必须支持。

glwz007 发表于 2020-2-18 08:07:38

系列教程吗?继续写下去!

KIKIYA 发表于 2020-2-18 10:23:26

glwz007 发表于 2020-2-18 08:07
系列教程吗?继续写下去!

会一直更新

DFrJ5KYVQaH 发表于 2020-2-18 11:39:57

欢迎搞下去

glwz007 发表于 2020-2-18 16:30:55

谢谢分享!

发表于 2020-3-26 16:07:18

谢谢楼主分享。
页: [1]
查看完整版本: 第1章 MicroPython 简介与语法