Python学习笔记(二)
此书略过了很多代码教程必备的背景知识介绍,对于Python是如何发明出来的、此语言擅长的领域均只字未提,开门见山地就开始讲述如何安装Python,可以说是干货满满。但是少了一些背景介绍后,对于从未接触过编程语言的人来说,这个简单粗暴的入门方式恐怕并不算友好。
Python在1989年就面世了,真正火起来,却是最近几年。虽然现在仍然是Java和C占了半边天,但Python席卷而来的风潮,已有越刮越勇的趋势。学了一周Python,发现Python最大的特点就是扩展性极好和代码简洁。“扩展性”这个偏专业的词可以这样理解:我们写的代码就像乐高的一块大平面底板,想实现搭个小房子能住人的话,就有两种方案:一是再拿一堆小巧的乐高零件,自己组装个房子;还有一种方法就是找一个已经搭好的房子,因为乐高每个板材间都有对应的凹凸孔,只要对上孔位,用力按一下就可以把房子和我们的底板拼接到一起了。而能轻松把其他“房屋”、“树木”、“栏杆”等安到我们的底板上,就是良好的扩展性。
Python的扩展性有多好呢?它可以做到不仅把“乐高”拼上去,还能把“纸模”拼上去,拼完“纸模”后,发现连“四驱车”也可以无缝拼接。这就让Python有点像浆糊,可以把很多语言库都黏上去作为它的零件。
不过,这样海纳百川就会产生一个问题,运行很吃资源。在过去移动存储还是3.5英寸软盘,内存有个128M都能开心到飞起的年代,代码当然是越接近硬件底层越能降低运算的损耗。
记得父亲这个电脑狂人,就在家里放了一堆底层语言VB和C的书籍,看得不亦乐乎,最津津乐道的也是如何优化代码,能减少零点几秒的执行时间。
仿若一转眼,这一切就突然变成了移动存储容量过T,内存8G起步、16G不过分的年代。在这个只要风口站对了,猪都能飞起的年代,各软件厂商最害怕的不是代码执行效率低,而是软件开发速度慢,导致错过了东风。
Python这样运行速度虽慢,却能快速组装出成品的代码,自然火了起来。Python的语言简洁还是一种相对来说很人性化的简洁,它很好地在“能看懂”和“尽量省略”中做到了平衡,看着像伪代码一样的文字描述,却是实实在在可以运行的Python代码,这大概也是它魅力所在。
这本书的前九章都是偏基础多一些,我浏览的速度也快很多。在列表这一章,看到Python仍然是从0开始计算索引,有点小生气。Java、C和JS里也都是从0开始计算索引,这意味着我列一个表,比如“苹果、梨子、香蕉”,如果想让电脑拿给我苹果,我必须说“请把第0个水果给我”,这不是很反人类吗?
编程语言最初把0作为列表的第一个,最大的考虑是节约计算机资源,但是现在资源完全够用的情况下,为什么不调整一下呢?当然,Python仍然保持这样的基本计算方式,也可能是为了让程序员在各语言间切换的时候,不至于头晕眼花。
到for章节,Python的简洁性就已能略窥一二。想当初学C语言时,想做一个for循环语句,循环次数是10次,起码要写成这样:
for(i=1;i
{
/*这里写循环内容*/
}
初学之时,经常要死背括号里被分隔开的代码分别是什么意思。而要达到同样的效果,Python就非常简洁:
for i in range(10):
#这里写循环内容
这样容易理解又简洁的语句,有时会有一种在看文章的错觉。最明显的体验就是,看C语言循环语句时,我的眼球转动是一顿一顿地,而看Python循环语句时,却是很平滑地从左到右,从上至下地看下去。
我在学习新语言时,总是喜欢和过去学习过的语言做对比。这次学到字典章节时,就有很明显的Json感觉。特点就是都能自如地定义键值对,而且支持层层嵌套。
学到类章节时,又和Java有了共鸣。但是Python的类和Java的类还是有很大不同。Python更像是个大吃货,在类方法的定义中,它甚至不要求我必须提供什么样类型的数据,一副来者不拒的样子。对数据的校验,几乎都要放在吃进去以后再进行,如果吃错了,才吐个“错误”出来。
可是这个大吃货也有自相矛盾的时候,虽然它吃什么不计较,可是对于配菜却极其讲究。“字符串”就只能配合“字符串”下咽,“数值”就只能和“数值”放一起,如果需要混搭,就必须把类型全部转换成一致的才可以。这一情况和JS就很不相同,我用惯了JS,喜欢在组装文本的时候,不考虑变量类型,直接把变量统统串在一起。如今,这个习惯可没少让我在Python运行中遇到BUG。
听说Python现在已经火到挤进了全国计算机二级考试,甚至有些小学都在试点对孩子进行Python教学。作为一个程序员,更加不敢再怠慢这门语言了。
初学Python,一些拙见,仅供参考。
——记于2018年11月5日,
学至《Python编程——入门到实践》第九章
领取专属 10元无门槛券
私享最新 技术干货