2020-2-17 12:36:06 [显示全部楼层]
5379浏览
查看: 5379|回复: 6

[uPyCraft IDE] 第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,这点要尤为注意。 点击查看MicroPython与Python的具体区别

1.2 MicroPython语法

1.2.1.1. print 输出

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

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

在终端使用:
第1章 MicroPython 简介与语法图1

在文件中使用:
第1章 MicroPython 简介与语法图2

注意:

当我们在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

谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail