Skip to main content

MicroPython基础

MicroPython 是一个精简版的 Python 3 解释器,专为微控制器和嵌入式系统设计。它让我们可以用 Python 语言控制单片机或者SOC中。

你可以把它理解成“跑在芯片上的 Python”。

1.基础数据类型与运算符

类型示例值描述
int10, -5, 0xFF整数(十进制、十六进制)
float3.14, -2.5浮点数
boolTrue, False布尔值
str'hello', "world"字符串
bytesb'abc', bytes([65,66])字节数据
list[1, 2, 3]列表(数组)
tuple(1, 2)元组
dict{'a': 1, 'b': 2}字典(键值对)

算术运算符

a = 10
b = 3
print(a + b) # 13
print(a - b) # 7
print(a * b) # 30
print(a / b) # 3.333...
print(a // b) # 3(整除)
print(a % b) # 1(取余)
print(a ** b) # 1000(乘方)

关系运算符(比较)

print(a == b)  # False
print(a != b) # True
print(a > b) # True
print(a < b) # False
print(a >= b) # True
print(a <= b) # False

逻辑运算符

x = True
y = False

print(x and y) # False
print(x or y) # True
print(not x) # False

赋值运算符

a = 5
a += 2 # a = a + 2
print(a) # 7

a *= 3
print(a) # 21

a //= 4
print(a) # 5

位运算符(适用于底层硬件控制)

x = 0b1010  # 10
y = 0b1100 # 12

print(bin(x & y)) # 0b1000(按位与)
print(bin(x | y)) # 0b1110(按位或)
print(bin(x ^ y)) # 0b0110(按位异或)
print(bin(~x)) # -0b1011(按位取反)
print(bin(x << 1)) # 0b10100(左移)
print(bin(y >> 2)) # 0b11(右移)

成员运算符(常用于字符串、列表、字典等)

letters = ['a', 'b', 'c']
print('a' in letters) # True
print('d' not in letters) # True

text = "hello"
print('e' in text) # True

类型判断

a = 123
print(type(a)) # <class 'int'>

s = "MicroPython"
print(isinstance(s, str)) # True

2.字符串

字符串的定义和基本使用:

s1 = "hello"
s2 = 'world'
s3 = "MicroPython"

print(s1) # 输出: hello
print(s1 + " " + s2) # 拼接: hello world
print(len(s3)) # 长度: 11

字符串索引与切片:

msg = "MicroPython"

print(msg[0]) # M(第一个字符)
print(msg[-1]) # n(最后一个字符)
print(msg[0:5]) # Micro(切片,从索引0到4)
print(msg[5:]) # Python(从索引5到结尾)
print(msg[::-1]) # 反转字符串:nohtyPorcim

字符串格式化:

1.使用 %

name = "Alice"
age = 25
print("Name: %s, Age: %d" % (name, age))

2.使用 str.format()

temp = 36.6
print("体温是 {:.1f}℃".format(temp)) # 保留1位小数

常用字符串方法:

text = "  hello MicroPython!  "

print(text.strip()) # 去除首尾空格
print(text.lower()) # 全小写
print(text.upper()) # 全大写
print(text.replace("Micro", "Mini")) # 替换单词
print(text.find("Python")) # 查找子串位置
print(text.startswith(" h")) # 是否以 " h" 开头
print(text.endswith("! ")) # 是否以 "! " 结尾

字符串拆分和拼接:

data = "temp,humidity,pressure"

parts = data.split(",") # 拆分成列表
print(parts) # ['temp', 'humidity', 'pressure']

joined = "-".join(parts) # 用 - 连接
print(joined) # temp-humidity-pressure

遍历字符串:

msg = "OKK123"

for ch in msg:
print(ch) # 每次输出一个字符

字符串转数字与判断:

s = "123"
if s.isdigit():
num = int(s)
print(num + 10) # 133

f = "3.14"
if f.replace('.', '', 1).isdigit():
print(float(f) * 2) # 6.28

3.判断语句

基础结构:

x = 10

if x > 5:
print("x 大于 5")

if-else 示例

light = "green"

if light == "red":
print("停下")
else:
print("可以通行")

if-elif-else 多分支判断

temp = 38.5

if temp < 35:
print("体温过低")
elif temp >= 35 and temp <= 37.5:
print("体温正常")
else:
print("体温偏高")

嵌套判断语句

x = 12
y = 5

if x > 10:
if y > 3:
print("x 和 y 都大于阈值")
else:
print("x > 10,但 y 不满足")

布尔运算结合

is_day = True
has_motion = False

if is_day and has_motion:
print("开启录像")
else:
print("不需要录像")

4.循环语句

for 循环基本用法

for i in range(5):
print("当前 i =", i)

range(5) 会生成:0, 1, 2, 3, 4(不包括5)

自定义起始值与步长

for i in range(2, 10, 2):
print(i)

输出:2, 4, 6, 8

遍历列表或字符串

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print("喜欢", fruit)

word = "Hi!"
for c in word:
print(c)

while 循环基本用法

count = 0
while count < 3:
print("count =", count)
count += 1

breakcontinue 控制

for i in range(10):
if i == 5:
break
print(i)

break:提前结束循环

输出 0~4,遇到5跳出

for i in range(5):
if i == 2:
continue
print(i)

continue:跳过本次循环

输出 0, 1, 3, 4,跳过了2

嵌套循环(两个循环)

for i in range(3):
for j in range(2):
print("i =", i, ", j =", j)

5.函数

基本函数定义与调用

def say_hello():
print("你好,MicroPython!")

# 调用函数
say_hello()

带参数的函数

def greet(name):
print("你好," + name + "!")

greet("小明")
greet("小红")

带返回值的函数

def add(a, b):
return a + b

result = add(3, 5)
print("加法结果是:", result)

带默认参数的函数

def blink(times=3):
for i in range(times):
print("LED 闪烁一次")

blink() # 默认3次
blink(5) # 闪烁5次

函数返回多个值

def min_max(a, b):
return min(a, b), max(a, b)

low, high = min_max(3, 8)
print("最小值:", low)
print("最大值:", high)

6.类与继承

定义类与创建对象

class Person:
def __init__(self, name):
self.name = name

def say_hello(self):
print("你好,我是", self.name)

# 创建对象
p1 = Person("100ASK")
p1.say_hello()

__init__() 是构造函数,创建对象时自动调用。

添加多个属性和方法

class Dog:
def __init__(self, name, age):
self.name = name
self.age = age

def bark(self):
print(self.name, "汪汪叫!")

def get_info(self):
return f"名字: {self.name}, 年龄: {self.age} 岁"

dog1 = Dog("小黑", 3)
dog1.bark()
print(dog1.get_info())

类的继承

class Animal:
def __init__(self, name):
self.name = name

def speak(self):
print(self.name, "发出声音")

# Dog继承Animal
class Dog(Animal):
def speak(self):
print(self.name, "说:汪汪!")

# Cat继承Animal
class Cat(Animal):
def speak(self):
print(self.name, "说:喵喵~")

dog = Dog("旺财")
cat = Cat("咪咪")

dog.speak()
cat.speak()

子类可以重写父类的方法(也可以通过 super() 调用父类方法)

使用 super() 继承父类构造器

class Animal:
def __init__(self, name):
self.name = name

class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # 调用父类构造函数
self.breed = breed

def show_info(self):
print("名字:", self.name, ", 品种:", self.breed)

dog = Dog("来福", "哈士奇")
dog.show_info()