1.1 Python的特色
对于熟悉高级语言编程的人来说,Python可能并不是一个“规范”的语言。以变量定义为例,在一般的高级语言中,变量是需要预先定义的,例如:a是数据类型的变量,a的赋值为4;b是字符串型的变量,b的赋值为“Python”;c是日期型变量,c的赋值为“2020/1/11”等。以VBA编程语言为例,在如下代码中,变量a、b、c在VBA代码中分别被定义为整数型、字符串型和日期型变量。
但是在Python代码中,变量是不需要预先定义的,示例代码如下(见本书配套的代码1-1.py):
注意
本书中介绍的代码后注明了在本书配套的代码中该代码的编号。另外,为方便起见,本书配套的代码在本书中采用了简化的表达方式,例如,本书配套的代码中的“1-1xxxx.py”,在本书中则简称为“代码1-1”。
从上述代码可以看出a、b、c变量并没有定义,而是直接赋值。
上面只是以变量定义为例说明了Python的一个特点,下面系统介绍Python的一些特点。
1.1.1 代码简单易懂
笔者在上Python培训课时,经常跟学员强调英语的重要性,如果开发人员的英语水平比较高,那么Python的代码是很容易看懂的,因为它基本上就相当于一篇英语小短文,示例如下:
对于上述代码,即使没有编程经验,看懂其大意也不是很难。其中的一些关键字,如open、load_workbook、for、range、sheetnames等,基本都可以望文生义。
Python代码比较简单快捷的另一个方面是对循环结构的简化。仍然以VBA为例,以下是一个VBA中的循环代码:
可以看出,在VBA中,循环体在关键字For和Next之间,也就是说,一个循环语句以Next作为循环的结束标志。对于多重循环,需要使用多个Next来终结。如下为内外两层循环的示例:
从上面的代码可以看出,VBA中的多重循环涉及For…Next语句的嵌套,而Python中则无须如此,见如下代码(见本书配套的代码1-2):
从上述代码可以看出,Python中的多重循环要比VBA中的简洁很多。
1.1.2 包罗万象的Python包
对Python略有了解的人都知道,Python的最大特点就是它有无数个“包”(package,也称为库文件),那么什么是包呢?关于Python的包并没有一个官方的定义,可大致表述为:包是一个程序块的集合,可以实现一个相对独立的功能。
例如,我们要实现以下功能。
1)在指定的Excel文件中新增一个工作表,新增的工作表是该工作簿的最后一个工作表。
2)将该工作簿中指定工作表的内容复制到最后一个工作表中。
3)在最后一个工作表中,对A~D列的内容进行排序,以A列作为排序依据,并按照数字大小进行排序。
4)最后返回B列数据的中位数和数据个数。
在Python包的机制下,假如有人编写了程序段来实现上述功能,并且经过了严格的测试,提交到相应的平台上审核通过后,就可以形成一个程序包,并且该包会放到Python官网上供其他人下载使用。
所以,有了包这个共享机制,很多事情我们都不用自己做,只需要去Python官网上搜索相应的包并调用即可,这就极大地方便了我们的工作。
再举一个生活中的例子进行类比。除了少数汽车行业的人之外,绝大多数司机并不懂汽车发动机和变速箱的原理,但是这并不会影响我们开车,因为汽车制造商把发动机和变速箱都封装起来了,司机只需要进行一些简单的操作就可以驾驶汽车。
Python包的官网地址是pypi.Python.org,图1-1所示是Python包的官网界面。
图1-1 Python包的官网界面
以数据分析包pandas为例,在图1-1所示的界面搜索栏中输入pandas并单击搜索图标,图1-2所示是在Python官网中搜索pandas得到的结果。
图1-2 在Python官网中搜索pandas的结果
据Python官网介绍,Python目前有40多万个包可供下载使用,这是一个庞大的包罗万象的包的集合。
1.1.3 超高的知名度和广泛的应用面
学习Python的一个巨大好处是Python是一个通用平台,这与Python平台的开放性和共享机制有关。Python在办公自动化、数据分析和挖掘、机器学习、人工智能等方面具有巨大的优势,对行业的覆盖面也很宽,从快消到金融、制造、政府部门等,Python都有其用武之地。
据笔者在培训和咨询中得到的消息,近年来Python的崛起对一些传统的数据分析软件(如MATLAB、SAS、SPSS等)构成了严重的威胁。相对于Python而言,这些软件收费高,而且有部分软件每年还要收取维护费用,而Python是开源、免费的,后续也不涉及维护费用。
免费且功能强大,使得Python获得了超高的知名度,现在有不少企业,尤其是金融企业,都希望员工能够掌握和运用Python语言。