购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

Chapter 1
第1章
学习Python的优势

自计算机问世以来,世界上诞生了几百种高级编程语言,Python只是其中之一,那么,在已有Java、VB、C、C++等著名高级编程语言的背景下,我们为什么还要学习Python呢?Python相对于其他高级编程语言有什么优势?这是本章要阐述的内容。

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语言。

1.2 学习Python的收获

虽然相对于Excel软件的学习来说,Python的学习过程要困难一些,但是学习Python的收获也是相当大的,这包括如下几个重要方面。

1.2.1 工作效率的提升

现在很多企业的数据量越来越大,而且其员工所做的重复性劳动也越来越多。以金融行业为例,据笔者所知,一个比较标准的工作流程如下。

1)下午3点股市收盘,证券公司的员工4点左右下班。

2)第二天早上7点左右,员工到公司,下载前一天股市的数据并且进行分析处理,其中包括股票、期货、基金、外汇等方面的数据。

3)员工通过相关的数据分析处理形成结论。

4)员工制作用于工作汇报的PPT。

5)员工8点左右开晨会。

如果这样的工作流程日复一日地进行,确实效率低下,如果学会了Python编程,可以将以上流程用代码实现。这样员工每天上班之后运行Python代码即可,不需要每次都手工操作了。所以说,Python可以极大地提高工作效率,使标准化的、重复的工作流程变得简单高效。

除了常见的Excel文件之外,Python还可以操作Text、Word、PPT、Access、PDF以及各种数据库文件,这同样能大大提高我们的工作效率。

1.2.2 工作能力的增强

Python是一种数据分析语言,从某种意义上讲,也是一个人类智慧集大成的工具。据笔者所知,Python官网上有一些可以实现人脸识别功能的包,应用这些包就可以完成一些比较基本的人脸识别需求。如果编码能力比较强,还可以解读这些人脸识别包的源代码并且对其进行改进。简单地讲,掌握了Python,就相当于掌握了大量的技能,包括数据分析和挖掘、机器学习等。

1.2.3 职场竞争力的提高

现在的职场竞争非常激烈,不但35岁以上的人群经常对职业前途表示忧虑,而且年轻人也经常担心自己是否有足够的职场竞争力。在大数据时代,各个企业机构所产生的数据越来越多,对于数据处理分析的需求也越来越多。而掌握了Python语言,就能在编程能力、统计挖掘方面获得很大的提升,这对提高职场竞争力有很大的帮助。

1.3 如何高效地学习Python

在了解了Python对我们的帮助之后,下面谈谈如何更好地学习Python。这些经验是笔者在长期的培训和咨询过程中通过接触大量的学员而总结出来的,特别适用于刚开始接触编程工作的人群。

1.3.1 打好编程基础

万丈高楼平地起,编程基础还是很重要的。各种变量的定义以及作用范围、各种循环结构、程序调试技巧等都是编程的基础,再复杂的代码也是根据这些基本的规则编写而成的。根据笔者的经验,部分学员在刚接触编程基础知识时往往觉得挺容易,但是只要内容稍微深入一点,就觉得吃力了,导致这种现象出现的主要原因还是其基础不够扎实。笔者在培训授课时就经常提到,不要轻视现在讲的基础知识,这是在为以后的进阶打基础,基础打好了,以后才能快速进步。

1.3.2 多“攒”代码

笔者还经常碰到学员问这样的问题:“Python代码根本记不住啊!面对空白的代码窗口,根本不知道如何输入代码!”对于此类问题,有两个应对方法:一是熟能生巧,代码写多了自然就熟练了;二是要“攒”代码,就是把测试成功的代码保存到一个Word文件中(其他的记录方式当然也可以),并打上合适的标签,需要用的时候再查找、复制即可。

下面是笔者积累的一些代码示例。

for循环语句:

打开Excel文件:

列出文件夹下的所有文件:

1.3.3 精通代码调试

代码调试是Python编程的核心。虽然在百度上可以找到很多Python代码,但是当程序出错时,特别是出现了逻辑方面的错误(即代码可以运行,但是结果有偏差)时,往往很难通过百度查到出错原因,只能靠自己摸索解决方案,不断积累经验。

一个编程高手必定是一个代码调试高手,或者说一个人的编程水平很大程度上可以从其查找程序出错的原因并且给出解决方案的能力上来判断。

一般情况下,Python代码是顺序执行的。例如,一段Python代码有300行,当程序执行时,这300行代码是按照语句的先后次序执行的。如果代码没有错误,300行代码就一次性执行完毕。如果代码中有错误,初学者由于经验不足,往往很难快速判断并找到程序的错误加以纠正。这时我们经常采用“单步调试”的方式,即一次只执行一条语句,编程者通过跟踪程序的执行状态和程序变量的中间结果来研判程序语句的正确与否。在单步调试的状态下判断和查找错误要比一次性执行程序容易得多。

根据笔者的不完全统计,大概有90%的Python代码可以通过单步调试的方式进行解读,只有少数代码由于调用了比较复杂的包,较难理解,也很难被单步跟踪。

1.3.4 面向实际工作场景

Python涉及的内容极其广泛和复杂,要想完整地学习和掌握Python是很难的。实际上,笔者更愿意把Python理解成一个平台而不是一门高级语言。Python就像苹果手机的iOS系统或者华为手机的Android系统,在底层系统上可以衍生出丰富多彩、千变万化的应用。同样,在Python平台上也有着海量的应用。因此,在学习Python时,笔者建议不要贪多。对于大部分初学者而言,最重要的是把自己工作的应用场景梳理清楚,并且能够熟练地使用Python将工作流程用编码的方式实现。

不追求大而全,把手头的工作深入地搞明白,在笔者看来这是最简洁高效地学习Python的方法。到目前为止,笔者还没碰到任何一个对Python的各种模块均非常精通的人,或许以后也不会碰到。 WVmlCTHv76oth5o3NCnk0qqJRoHU5zcFeBJkM3nxAm12X//q4TMNUQAfbmYW4jAE

点击中间区域
呼出菜单
上一章
目录
下一章
×