书名: Python硬件编程实战

作者: 李茂

出版社: 机械工业出版社

【此处需要插入图片 Python封面】

笔者简评:不太适宜购买,全书大篇幅在用图片来解释极简单的细节,对于那些需要作者去深挖、深入浅出解释的地方,则一概而过,算是不伦不类吧;尽管如此,毕竟是笔者在图书馆好不容易碰运气找着的一本还算可以的Python教程书了,也算认真地看了一遍。

Python是一种脚本语言,是一种解释型语言,是一种高级语言,是一种面向对象的语言。

Python文件的后缀名是.py,它在实质上是一种文本文档,因而也就可以用文本编辑器甚至是记事本来进行编辑。

Python的缩写是Py,如目前讨论比较热烈的究竟是用python2.+版本还是python3.+版本,就可以缩写为Py2VSPy3。

Print #此代码即为输出空行。

32位 == x86 32位,也即32bit

64位 == x64 两者的主要区别即硬件CPU上,当然,也有的软件在两者上存在些微区别,大多数已经都支持64位了。

初学者,一般建议使用32位的python2.7版本最好,一来支持的库丰富,二来不用担心硬件不能支持,三来功能相对来说是更经济适用的,学会了2.0版本后,再去学习3.0版本就会很快。

源码的主要格式有以下5种:

1.【.tar】 2.【.gz】 3.【.zip】 4.【.7z】 5.【.tar.xz】

要将python的安装路径添加至环境变量Path中去。

在设置保存路径时,尽量使用英文、数字、下划线,余者皆不宜,因为容易在后期出现未知错误;尤其不能使用空格,也尽量不要使用汉字。

IDE:Integrated Development Environment。即集成开发环境。所谓集成,就是将一些相对独立、分散的东西,聚合到一块,使之方便调用。

Notepad++据作者李茂称是个蛮好用的文本编辑器,笔者暂未试用,先不予评价。

一个好的文本编辑器,当然得支持语法高亮,当然要对多种编码有比较好的支持,也最好有自动补全语法的功能。似乎Notepad++都有这么些功能。

不过,Notepad++的语法高亮需要自己根据所编辑的语言进行自定义设置,方法为:语言-P-Python。

Windows下的CMD,即命令行工具Command Line。

在CMD中进入某个目录的方法:

Win+R-键入“cmd”-Enter-键入该路径所在盘符如“D:\” -键入“cd[空格]路径”。如下图所示:

【此处需要插入“CMD”图片】

Notepad++似乎可以直接用CMD打开该文件所在目录,路径:运行-OpenCurrentCmdDir。

似乎可以通过某种方法将用CMD打开目录这个指令集成到右键菜单中,回头得空要去试一试。

在CMD中,如果已经进入了该文件所在目录,那么为了运行该文件,必然需要将其文件名打出来,如果一个一个打,则未免过于浪费时间,CMD中有一个自动补全文件名的功能,那就是Tab键,如果该文件所在路径只有那一个文件,暂时叫它“Hello.py”,那么我们只需要键入“H”,然后再按一下Tab键,就可以将文件名自动补全;如果存在多个文件,那么可以按多次Tab键,直到补全的名字为我们所需要的文件名为止。

在IDLE中一次性地复制粘贴多行代码,很可能会报错,估计是因为缩进不规范导致的。待检验。

Python、CMD等,适合较短、较简单的代码的运行和测试;大型一点的,需要用诸如IDLE、PyCharm来进行编辑,其中,进入IDLE的方法可能有一定讲究,比如,如果直接双击其快捷方式进入,那么可能界面和命令行CMD差不多,简陋得很;如果是在py文件上右键选择“Edit With IDLE”则直接进入一个比较成熟的GUI界面,很PyCharm差不多。

#!/usr/bin/python

#_*_ coding: utf-8 _*_

上述第一行,其中的【#!】特殊字符组合,被称为SheBang,目前我也不知道是个什么意思,待查找;该行的作用是,如果Python看到了SheBang开头的行,便会自动到后面所附的路径下去寻找和运行对应的文件。

上述第二行,是一个编码说明。如果没有这个说明,那么Python就会默认你使用的是ASCII编码,也即只用这个编码方案来处理你写出来的代码;问题就在于,如果你写出来的代码不知不觉间附加了某个非ASCII代码,那么Python就会报错,这个时候就麻烦了。所以,最好加上这么一行编码说明,以便于让Python来对号入座的处理你的代码。

编码说明所在的位置,只能在第一行或者第二行;即如果有SheBang语句,那么就应该把编码说明放在第二行,没有的话就要放在第一行;若是放在其他位置,则Python会认为你不合规矩,也就不会听你的话来给你好好地执行代码了。基于此,最好对编码方案有一定的了解,故此需要在接下来的日子学习Html的知识。

在Python中,缩进是很严格的,与其他语言中的缩进作用不一样,Python中采用缩进不仅仅是为了美观的目的,而更是将其内在的代码逻辑蕴含于此,也即在Python中,缩进决定了代码的Context,如果缩进处理不好,就会报错,毕竟Python没法从你的上下文中理解你的真实意图了。一般因为缩进问题而报错的类型是如下:

【IndentationError:unexpected indent】

另外,缩进后的代码从属于上一行那个函数,可以将该函数下面的所有缩进的代码称为一个代码块Code Block。

Def main(): #定义一个main函数,所谓main,即脚本的主模块的名字,当然,我们

#给这个主模块起任何的名字

Code Block #代码块

If __name__==”__main__”: #如果该模块的名字为主模块名,那么久运行下面的main(),

#也即上面的main的代码块

main()

关于name的辨析:

如果name在模块Modules中,则name为模块名;如果name在类Classes中,则name为类名,也即主模块名,当然,这只是我个人的理解,待检验。

脚本的主模块名字,叫做__main__。脚本在被当做模块时,第一次被导入import后,系统会自动为其创建一个域名空间namespace。

如果当前脚本被当做模块被调用,则根据上面的辨析,我们知道此事的name为对应的模块名,也即,此时是不符合if的判断条件“name=main”的,所以就不会将main()执行;如果当前脚本被当做普通的脚本文件单独运行,那么此时该脚本就自动成为主模块了,毕竟就它一根独苗了,此时自动满足if的判断条件,也就会执行main()的函数了。

之所以在函数结尾处加入这么一句判断,原因在于,调用这个脚本时,我只是把它当做工具来使用,而不注重它究竟是个什么内涵的玩意儿,我并不关心它有什么“料”,打个比方,我调用“她”只不过是“玩玩而已”,我们俩这样“契合”只不过是各取所需,不希望对方“介入自己的生活,不要在自己的世界留下痕迹”,这样,我们就只需要将它作为工具来调用,为了达到这个目的,就应当加入这么一句判断了。

Self.value.name #Instance.PropertyName,读取、写入实例的名称值

Self.function() #Instance.function(),执行对应的动作

如果没有在Class的最初的__init__函数中正确的初始化实例变量,则会导致后续没有变量可用,进而出现AttributeError,莫名想到了那句“后死无仇可雪”,哈哈!

好的变成风格,应该命名时有所规范,使得所命制之名可以被一眼看出其作用,以便日后检查、回顾时阅读,如“name=Global News”这样的,应该改为“gName=Global News”。

变量的作用域Variable Scope:

1. 全局变量Global Variable

2. 局部变量Automatic Variable

关于他俩的关系,暂时不是特别清楚,待日后学完再补充。

If条件判断的几种写法:

(一)不带Else或Elif

If condition: #注意,在跑一趟Python中,凡是涉及判断等语法的,都有在行末添加英文冒号

Code-block

(二)带上Else

If condition:

If-body

Else:

Else-body

(三)三者俱全

If if-condition:

If-code-block

Elif condition-1:

Code-block-1

Elif condition-2:

Code-block-2

……

Else:

Code-block-else

函数:

【此处需要插入“函数图片”】

下面是一个好的排版方式,值得学习,如下:

Author: Mr_Ouyang

Version: 2.7.6

Contact: ouyy15@qq.com

总结起来就是,先将第一列的那些类别名先写出来,然后再从最长的那个入手,写好,尔后用空格使得左右内容有一种对称的美感,个人觉得蛮不错。

交换变量值的方式:

(一) 其他语言中的方法

temp=a

a=b

b=temp

#通过借助temp这么一个中间变量,形成置换

(二) Python中的方法,可以称之为多变量赋值,效率贼高

b,a = a,b

c,a,b = a,b,c

z,y,x,…,c,b,a = a,b,c,…,x,y,z

#直接通过顺序实现多变量的赋值,正如其名,赋值!直接将各变量赋值给需要置换的变量即可,此方法不限制个数,如上面第一行是两个变量置换,接着是三个、二十六个变量置换。

切片Slice:通过索引来取得String的内容,自定义截取

如:

Text=”String”,如下图所示,从S前面开始,算作索引号为0处,S与t之间是索引号1,可以看出,通过最多两个索引号,便可以将字符截取出来,如通过0:1可以将S截取出,以此类推。至于前面和后面的两个符号“[:”与“:]”则是表示截取。下面给出截取的实例。

【此处需要插入“索引”图片】

Text[1:4]=trij #正常截取方法

Text[:5]=Strin = text[0:5] #可以将首和尾的索引号省略,如此处将0省略了

Text[:-1]=Strin = text[0:-1] = text[0:len(text)-1] #可以用负数索引号,也即倒着数的索引号,如-1。Len可以将放在括号内的参数的字符数计算出,比如len(text)就返回6,用len(text)减去某个数,也就等价于负的某个数,如此时的等价于-1。

Text[-4:]=ring = text[-4:len(text)] #省略尾索引号

Text[2]=r = text[2:3] #在只截取一个字符时,可以只写出该字符前面的索引号,而省略其后面那个索引号

Text[:]=String = text[0,len(text)] #直接一个冒号,代表截取全部字符

Text[::-1]=gnirtS #两个冒号,代表根据后面的数字进行跨越截取,后面跟着的数字,为步长值,正数则从前往后截取,负数则从后往前截取,如此处的代表从后往前截取,每次截取一个字符,故而得到倒着的全部字符

Text[::2]=Srn #倒着截取,步长值为2,代表从前往后截取,每次跨越两个字符,故而得到正着的Srn,其实也就是相当于[0]+[2]+[4]截取的结果。

循环和枚举:

(一) 其他语言中的循环和枚举

>>>print items

[‘zero’,’one’,’two’,’three’]

>>>index=0

For item in items:

Print index,item

Index +=1 #也即每次进行print操作后,都将Index+1赋值给Index

(二) Python中的循环和枚举

For I in range(len(items)):

Print I,items[i]

或者是

Items=’zero one two three’.split()

For (index,item) in enumerate(items):

Print index,item

#enumerate可以直接生成(index,item)类型的元组Tuple变量

条件性赋值:

(一)两个条件

Y=0

X=3 if (y==1) else 2

Print x

>>>2 #输出结果为2,因为y<>1,所以x为2

(二)三个条件

Y=0

X=3 if (y==1) else 2 if (y==-1) else 1

Print x

>>>1 #输出结果为1,因为y<>1且y<>-1,所以x<>3且x<>2,只能等于1

开源软件的特点:

开源;公开软件的源代码

共享;

Bug反馈;如果在共享使用过程中,发现任何Bug,可以及时与开发者反馈,方便软件的改进

新添功能;用户可以将自己的成果添加进软件,使得软件越来越好

开源硬件:与开源软件类似。

现行比较厉害的开源硬件有这么几种:Arduino,树莓派,pcDuino。看书上写的开源硬件可以做到很多事情,比如湿度监测器、邮件控制车库门升降等,以后要去试试看,据说最高境界可以用来控制机器人,待学习。

笔者自己在百度文库找的Python2.6指南的中文翻译教程。网址:

https://wenku.baidu.com/view/924e1edf50e2524de5187e53.html

python硬件编程_Python学习日记_《Python硬件编程实战》笔记_Mr_Ouyang相关推荐

  1. python sorted下标_Python学习教程(Python学习路线):第七天-字符串和常用数据结构

    Python学习教程(Python学习路线):字符串和常用数据结构 使用字符串 第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算导弹的弹道,因此在计算机刚刚诞生的那个年代 ...

  2. python的认识_Python学习之认识python

    Python 版本 ​Python 从1989年诞生的第一个版本,到目前为止,存在 python2 和 python3 两个版本,并且两个版本不兼容.目前python 程序中 python2 占比依然 ...

  3. python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询

    我们经常在开发中会遇到这样一种场景,即轮循操作.今天介绍一个Python库,用于更方便的达到轮循的效果--backoff. Python学习教程:Python 使用 backoff 更优雅的实现轮询 ...

  4. python pyplot安装_Python学习-windows安装Python以及matplotlib.pyplot包

    引文: Python自带了许多的库文件,其中matplotlib可以做出类似于MATLAB和R语言一样绘制出很好的图形功能,下面介绍下怎么安装这个包,因为自己安装的时候很多地方都出错了. 环境: Wi ...

  5. 学习python环境安装_Python学习环境安装,python

    1.python 安装,官网下载,之前已经安装过,这里不再说明 2.安装PyCharm 下载后双击程序安装,注意要选择(add to path),否则安装后要设置环境变量 3.安装PyCharm格式化 ...

  6. 老男孩python第九期_python学习之老男孩python全栈第九期_day004知识点总结

    1. 列表list: 列表转换成字符串: s = 'kidd' s1 = '_'.join(s) # 用_连接 字符串转换成列表: split() range(头,尾,步长):[0,1,2,3,4,5 ...

  7. 老男孩python第九期_python学习之老男孩python全栈第九期_day009作业

    1. 写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者. 答: 1 l1 =[]2 defodd(li):3 for i in range(1,len(li) ...

  8. 有哪些免费自学python的网站_Python学习网站有哪些?Python基础教程网站推荐

    Python学习网站有哪些?Python基础教程网站推荐:菜鸟教程.PHP中文网.PHP中文网.W3C.Reddit.博学谷.python中文学习大本营.Python 3 Module of the ...

  9. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

最新文章

  1. 基于TensorFlow理解三大降维技术:PCA、t-SNE 和自编码器
  2. vsphere通用配置_Mac环境下如何用Hexo+Github搭建个人博客
  3. Start application automatically during controller boot-up
  4. python3怎么安装gmpy2_python2/3 模块gmpy2在linux下安装
  5. nginx 带宽_Nginx的Gzip功能
  6. 表数据库名_关系数据库理论:数据库的六大范式知识笔记
  7. Mysql主从复制集群类型和搭建方法
  8. ssm(spring + spring-mvc + mybatis)整合
  9. TiDB DevCon2018.tick(1.20)
  10. Unity3D 渲染管线全流程解析
  11. 税务会计实务【15】
  12. 怎样用c语言制作文件保险箱,开题(电子保险箱)技巧.doc
  13. 文件包含漏洞及简单绕过
  14. 关于医疗影像的mhd和dcm格式图像的读取和坐标转换
  15. 前端开发必备神级资源
  16. vsftpd安装以及配置FTP虚拟用户实践
  17. linux脚本出错仍执行后续脚本,crontab执行脚本出错
  18. SQL注入靶场:辛巴猫舍
  19. 【Python从入门到精通】二、核心编程:5.正则表达式
  20. 正则环视 php,正则基础之 环视 Lookaround

热门文章

  1. cad截图软件_AutoCAD电气制图协会线上CAD学习打卡活动结束
  2. 通用mapper_通用Mapper快速开发,搭建项目
  3. 蓝桥杯 2018年蓝桥杯C语言大学C组 C/C++
  4. 一行代码画一个数据分析图(lzdb 库)
  5. 【机器学习-西瓜书】六、支持向量机(SVM):最大间隔;对偶问题;KKT条件
  6. AcWing321.棋盘分割(区间DP)题解
  7. 编程实现 带符号减法溢出判断
  8. (C语言)二维整型数组的“最大点”(驻点)
  9. Python——itertools.chain.from_iterable将多个迭代器连接成一个统一的迭代器的最高效的方法
  10. PyCharm——如果不小心修改了第三方库文件,怎么办?