什么是库?
我们可以思考一下,那就是生活中的一些仓库,我们会将很多需要使用的工具堆积(存放)在仓库中,当需要使用的时候,我们就会从仓库中取出(调取,调用)这样的工具。其实这样一个简单的例子,就是仓库的定义。
Python库是参考其它编程语言的说法,就是指Python中完成一定功能的代码集合,供用户使用的代码组合。在Python中是包和模块的形式,一般按照API的惯例来设计库。
那什么又是API呢?
其实它有两种,一种是数据API,另一种是库的API,这边我们简单了解一下库的API。库的API很好理解,就是一个人写了一个Python库,他要找一个地方告诉你库里的每个函数接什么样的参数,一个对象可以调用什么样的方法(函数),这个地方可以称为API。它其实是开发者和使用者之间的一个桥梁,一个接口。
库的定义是什么?
其实很简单,库的定义就和我们生活中的仓库很相像。比如说我们需要去做一件事情的时候,往往需要去借助一些工具帮助我们更加高效的完成工作,但我们不是孙悟空,不会七十二变,且手上一般都没有现成的东西,这个时候就需要我们去找一些工具协助工作。
例如:医生会有他的一个医药箱,工人叔叔会有他的工具箱。他们在工作中需要用到某种工具的时候,就会到工具箱里面去寻找,其实这个工具箱就相当于是我们Python中的库。
经过这样的比喻之后,我们就可以更加清晰的明白。
很多时候我们想实现一些Python功能的话,就可以去我们对应的库中,调用这些功能。
接下来我们简单举个例子来了解一下:
之前我们在学习中对于童心派设备的认知已经有很多了,基本上可以了解到童心派的功能和作用,
其中就包括(播放、灯光、显示、感知、体感)等等。
问题:如果说我们现在要做一个播放音频文件或者声音的程序,应该怎么办呢?
其实童心派已经解决了这个问题,制作同心派的开发人员,他把一些简单的功能罗列到一起,整理成了一个第三方的库(开源免费),那么在这个库里面我们就可以实现直接调用一些功能。
例:
# 导包(童心派的内置库)
import cyberpi # 或 from cyberpi import *
# 播放预置的音频文件,该API会阻塞线程直至音频播放结束。
# 参数:cyberpi.audio.play_until(music_name)
# music_name str,有效范围和对应音频效果见表
cyberpi.audio.play_until('hi')
将这段程序上传到设备(童心派),就可以实现设备播放音乐"Hi。
注意:程序的开头一定要输入 "import cyberpi"(导包),这段程序的含义就是 “调用童心派中关于Cyberpi库的程序使用”。
如果没有这段程序,那会有什么样的情况出现呢?
我们可以发现如果没有进行库的引用,那么是没有办法执行下面程序功能的,设备显示屏上会出现一段红字,显示报错。
再例如,点亮童心派上LED灯珠,该API有两种使用方法
cyberpi.led.on(r, g, b, id = 'all'):
1.cyberpi.led.on("r", id = 'all')
点亮整个灯条,亮为红色,all = 全部灯条,共5条。
cyberpi.led.on("red")
只指定颜色,不指定id,则默认开启全部灯条。
cyberpi.led.on(255, 0, 0)
同样是只指定颜色(红色),参数依次对应:颜色、饱和度、亮度。
2.cyberpi.led.on("red", id = 1)
将灯带上第1个位置的灯珠,亮为红色。
参数:颜色(str),指定位置(id = 1-5之间)
cyberpi.led.on(255, 0, 0, "all")
console:意思是在控制台交互模式下可以实现,那么这段程序就可以理解为在我们的控制台打印,显示出括号内的内容。
这样子我们显示屏上面就可以实现打印出"Hello World"的文字文本。
例:
cyberpi.console.print('Hello')
cyberpi.console.print('World')
感知:cyberpi.controller.is_press(name)
判断对应按钮或摇杆是否被触发,
参数:name(str),代表判断被触发按钮或摇杆的名字。有效范围有:
"a":按钮A(方形)
"b":按钮B(三角形)
"up":摇杆向上拨动
"down":摇杆向下拨动
"left":摇杆向左拨动
"right":摇杆向右拨动
"middle":摇杆中间按下
"any_direction":摇杆朝任意方向拨动
"any_button":按钮A或B
"any":任意按钮或摇杆触发
# 例如:
impot cyberpi
# 上传之后,主要我们按键a按下,就可以实现播放声音“beeps”。
while True:
if cyberpi.controller.is_press("a"):
cyberpi.audio.play('beeps')
体感:cyberpi.is_tiltforward(),判断童心派是否向前倾斜。
# 例如:
import cyberpi
# 上传到设备之后,就可以实现只要我们的设备向前倾斜,就会发出指定的声音(如:beeps)。
while True:
if cyberpi.is_tiltforward():
cyberpi.audio.play('beeps')