MicroPython 基础
MicroPython文档: https://docs.micropython.org/
MicroPython 是编程语言 Python3 的精简高效实现,语法和 Python3 保持一致,但只实现了 Python 标准库的一小部分,并且经过优化,可以在 MCU , WIFI SOC 等资源受限的环境中使用,所以我们在使用 MicroPython 需要了解其语法。其有以下特点:
轻量级设计:
- MicroPython 是专为运行在微控制器上的 Python 实现,既有精简的内存占用也有高效的性能表现。
Python 语法支持:
- 尽管是标准python轻量级的实现,MicroPython 支持大部分 Python 3 的核心语法和许多标准库。所以学习成本极低,对熟悉 Python 的开发者非常友好。
硬件访问能力:
- MicroPython 提供访问底层硬件的接口,比如 GPIO(通用输入输出)、I2C、SPI、PWM、ADC(模拟数字转换)等,方便直接控制硬件。
1. 注释
在Python中使用"#"进行单行注释,使用三个单引号 '''...'''
或3个双引号 """..."""
进行多行注释。注释对于代码的可读性和维护都非常重要。
#这个是单行注释
'''
这个是多行注释
'''
"""
这个也是多行注释
"""
2
3
4
5
6
7
8
9
10
需要注意的是,在MicroPython中是不需要在语句的结尾加分号的。
2. 运算符
算术(数学)运算符:
下表中说明的a=10,b=5
运算符 | 描述 | 示例 |
---|---|---|
+ | 加 | 两个对象相加a+b,输出结果=15 |
- | 减 | 得到负数或是一个数减去另一个数 a-b,输出结果5 |
* | 乘 | 两个数相乘a*b,输出结果50 |
/ | 除 | a/b = 10/5 = 2 |
// | 取整除 | 返回商的整数部分。9//2,输出结果4 |
% | 取余 | 返回除法的余数 b%a 输出结果5 |
** | 指数 | a**b为a的b次方,输出结果10^5=100000 |
3. 数据类型
数据类型 | 描述 |
---|---|
int | 不限长度的整数类型,可以进行整数运算 |
float | 双精度浮点数,用于表示小数,精度可能有限 |
bool | 布尔值,True 或 False ,用于逻辑运算 |
str | 字符串,表示文本数据,支持字符串操作 |
bytes | 不可变的字节序列,用于二进制数据或编码字符串 |
bytearray | 可变的字节数组,用于修改二进制数据 |
list | 有序列表,元素可以是不同类型,支持增删改查 |
tuple | 不可变的有序列表,创建后内容不可更改 |
set | 无序集合,元素唯一,支持集合运算 |
dict | 键值对集合,键是唯一的,用于存储和检索数据 |
None | 空值或无值,NoneType 类型的唯一值 |
4. 数据类型转换
语句(函数) | 说明 |
---|---|
int(x) | 将x转换为一个整数 |
float(x) | 将x转换为一个浮点数 |
str(x) | 将对象 x 转换为字符串 |
5. 字符串
字符串在我们后续的应用中经常用的,因此这里需要特别说明一下。
字符串的三种定义方式-> 单引号定义法
; 双引号定义法
;三引号定义法
。
其中
单引号定义法,可以内含双引号;
双引号定义法,可以内含单引号 ;并且可以使用转义字符(\)来将引号解除效用,变成普通字符串。
name = '立创开发板' #单引号定义法
name = "立创开发板" #双引号定义法
name = """立创开发板""" #三引号定义法
2
3
5.1. 字符串拼接
name = 'LCKFB'
print("hello " + name)
2
注意:字符串无法和非字符串变量进行拼接
name = 'LCKFB'
print("hello " + name, end='')
2
默认print语句输出内容会自动换行,在print语句中,加上 end=‘’ 即可输出不换行了。
使用print()函数可以将数据打印到终端。
5.2. 字符串格式化
我们可以通过如下语法,完成字符串和变量的快速拼接。
格式符号 | 转化 |
---|---|
%s | 将内容转换成字符串,放入占位位置 |
%d | 将内容转换成整数,放入占位位置 |
%f | 将内容转换成浮点型,放入占位位置 |
如下代码,完成字符串、整数、浮点数,三种不同类型变量的占位。
name = "张三"
age = 18
weight = 140.54
message = "我叫%s,今年%d岁,体重%f斤" % (name, age, weight)
print(message)
2
3
4
5
输出结果:
注意:这种写法不做精度控制也不理会类型。
6. 判断语句
在MicroPython中,if 语句的基本格式与标准的Python相同。以下是一个基本的if 语句的格式:
if condition:
# 条件为真时执行的代码块
2
如果需要处理条件不满足的情况,可以使用 else:
if condition:
# 条件为真时执行的代码块
else:
# 条件为假时执行的代码块
2
3
4
如果需要检查多个条件,可以使用 elif:
if condition1:
# 条件1为真时执行的代码块
elif condition2:
# 条件1为假且条件2为真时执行的代码块
else:
# 所有条件都为假时执行的代码块
2
3
4
5
6
这里是一些例子:
x = 10
if x > 0:
print("x is positive")
if x > 0:
print("x is positive")
else:
print("x is not positive")
if x > 10:
print("x is greater than 10")
elif x == 10:
print("x is 10")
else:
print("x is less than 10")
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
归属于if判断的代码语句块,需在前方填充4个空格缩进。
Python通过缩进判断代码块的归属关系。
if...else语句格式
if age >= 18:
print("你的年龄大于等于18岁")
elif age > 10:
print("你的年龄大于10岁并且小于18岁")
else:
print("你的年龄小于等于10岁")
2
3
4
5
6
7. 循环语句
7.1. while循环
i = 0
while i < 10:
print("i = %d" % i)
i += 1
2
3
4
7.2. for循环
name = "LCKFB"
for x in name:
print(x)
2
3
语法一:range(num)
range语句是用于获得一个数字序列。指的是从0开始,到num结束(不含num本身)
for x in range(5):
print(x)
2
语法二:range(num1, num2)
for x in range(5, 10):
print(x)
2
指的是从num1开始,到num2结束(不含num2本身)
8. 函数
函数是组织好的,可重复使用的,用来实现特定功能的代码段。 函数的定义:
def 函数名(传入参数):
函数体
return 返回值
2
3
注意: 如果函数没有使用return语句返回数据,会返回None这个字面量;在if判断中,None等同于False;定义变量,但暂时不需要变量有具体值,可以用None来代替。
使用 global关键字 可以在函数内部声明变量为全局变量,相当于C语言里的static。
def test():
global num
num = 200
print(num)
2
3
4
9. 类和继承
在Python中,可以通过定义类来实现面向对象编程。类包含数据和函数,数据保存在类的属性中,而函数保存在类的方法中。通过创建类,可以生成相同类型(或者父类)的多个对象,它们共享相同的属性和方法。
继承是指一个类可以派生出另一个子类,而子类继承了父类的属性和方法。子类可以进一步重载父类的方法或者添加新的属性和方法,从而实现对父类的扩展。
- 定义类:
使用 class 关键字定义一个类,并使用代码块来编写类的属性和方法。例如:
class MyClass:
def __init__(self, param):
self.param = param
def method(self):
# 方法实现
pass
2
3
4
5
6
7
- 实例化对象:
通过调用类的构造函数,可以创建类的实例(对象)。例如:
my_object = MyClass("value")
- 访问属性和调用方法:
使用对象名后跟 . 来访问对象的属性和方法。例如:
value = my_object.param
my_object.method()
2
- 继承:
在 microPython 中,您可以使用继承来创建一个类从另一个类继承属性和方法。通过继承,子类可以获得父类的特征并添加自己的特定功能。例如:
class ChildClass(MyClass):
def __init__(self, param, child_param):
super().__init__(param)
self.child_param = child_param
def child_method(self):
# 子类方法实现
pass
2
3
4
5
6
7
8
在上面的示例中,ChildClass 继承了 MyClass,并添加了自己的属性和方法。super().init(param) 调用父类的构造函数。
- 多重继承: microPython 支持多重继承,即一个类可以从多于一个父类继承。多重继承可通过在类定义中列出多个父类来实现。例如:
class ChildClass(ParentClass1, ParentClass2): # 类定义
pass
2
这些是 microPython 中类和继承的基本用法。类和继承是面向对象编程的核心概念,可以帮助您组织和抽象代码,实现代码的重用和扩展性。