您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件开发专栏 > 开发技术 > 正文

人生苦短,为何一定要学Python?

发表于:2018-04-16 作者:佚名 来源:互联网综合整理

人生苦短, 我用 Python ,不知道从什么时候开始,这句话开始流行。

人们可能会说, 2017 年是 Python 辉煌的一年。毕竟在这一年中,Python 的增长速度令人惊艳。

主要编程语言的增长趋势,图片来自 Stack Overflow

在GitHub 2017年度报告中,Python 超越 Java 成第二受欢迎语言。在 ranked.com 的排名中,Python 是 2017 年最受欢迎人工智能编程语言(第二是 C++,R 并未上榜)。

根据 Stack Overflow 流量统计,2017 年 6 月,Python 第一次成为高收入国家 Stack Overflow 访问量最大的标签。

在 TIOBE 2018 年 4 月编程语言排行榜前 20 名中,Python 已跃居到第四位,前三分别为为 Java ,C、C++。

在最新的 HackerRank 2018 开发者技能调查中,根据 HackerRank 的爱恨指数数据,Python 基本赢得了全年龄段开发者的芳心。

随着 Python 进入小学课本、Python 进入浙江省高考、计算机二级考试加入了“Python 语言程序设计”科目、国务院发布《新一代人工智能发展规划的通知》等新闻的不断出现,Python 的这股火就越来越热。

天呐撸!小学生以后不仅会打王者农药,还能手把手教你玩转 Python……据小编掐指一算,这恐怕会让无数八零后、九零后家长甚是忧愁——今后如何给孩子辅导作业啊???

那么,为什么用 Python,它能用在哪儿,能做什么呢?

利用 Python 进行数据分析

利用 Python 爬取网页数据

利用 Python 写小游戏

用 Python 写一个自动抢票的脚本

Python 有什么优点


Python 在约 40 年前出现,现在已经有数以千计基于这项技术的网站和软件项目。Python 因其独有的特点从众多开发语言中脱颖而出,深受世界各地的开发者喜爱。

下面,我们列举了 Python 最显著的一面。所有这些优点使它非常流行,也让众多跨国公司选择了 Python 作为他们的编程语言。

简单,我们可以说 Python 是简约的语言,非常易于读写,遇到问题时,程序员可以把更多的注意力放在问题本身上,而不用花费太多精力在程序语言、语法上。

免费,Python 是免费开源的。这意味着程序员不用花钱,就可以共享、复制和交换它。

这也帮助 Python 形成了强壮的社区,使它更加完善,技术发展更快。专业人士可以在社区和初学者中分享他们的知识和经验。那么找到你可以使用的开源库会得到什么好处?削减一半的项目支出!

兼容性,Python 兼容众多平台,所以开发者不会遇到使用其他语言时常会遇到的困扰。

面向对象,Python 既支持面向过程,也支持面向对象编程。在面向过程编程中,程序员可以复用代码;在面向对象编程中,使用基于数据和函数的对对象。尽管面向对象的程序语言通常十分复杂,Python 却设法保持简洁。

库,Python 社区创造了一大堆各种各样的 Python 库。在他们的帮助下,你可以管理文档,执行单元测试、数据库、Web 浏览器、电子邮件、密码学、图形用户界面和更多的东西。所有东西包括在标准库,然而,除了它,还有很多其他的库。

Python 语言的用途


多年来,Python 在各种流行编程语言中一直排名靠前。它几乎可以适用任何开发,它旨在提高程序员的开发效率而不在于他们编的代码。

Python 适用于网站、桌面应用开发,自动化脚本,复杂计算系统,科学计算,生命支持管理系统,物联网,游戏,机器人,自然语言处理等很多方面。

而且,既使对于那些从没有开发经验的人来讲,Python 的代码也是简洁易懂的。

由于 Python 程序代码简单,所以与其他程序语言相比,后期的程序维护更容易,更舒心。从商业角度来看,需要的成本降低,程序员的效率提高。

谁使用 Python


Python 开发人员社区不断壮大,支持库持续增多,使 Python 成为世界上功能最丰富的编程语言之一,可以适用于任何项目开发。

但我们仍要指出,Python 在科学领域非常流行,特别是在数据挖掘和机器学习等方面。

为了全面理解 Python 相对于其他语言的优势,我们将把 Python 和最流行的 Web 技术做下比较,先从 PHP 开始。

Python 和 PHP


从开发的角度来看,PHP 是面向 Web 的语言。PHP 应用程序更像是一组单独的脚本,甚至只是一个单独入口。

而 Python 是多用途语言,也可以用于 Web 开发,基于 Python 的 Web 应用是加载到内存的完整应用,有自己的内容声明,保存所有的查询和请求。

选择 Python 还是 PHP 进行 Web 应用开发需要注意以下几点,下面是 Python 和 PHP Web 开发的比较。

通用性

当今时代,趋势和流行非常重要,一些客户和产品负责人只想使用最流行最热门的技术来开发他们的项目,造成了技术精湛的开发人员却完全没有客户和工作的情况出现。

所以在开始学习任何东西前,要确保你要学的技术在未来 1、5 或 10 年内仍保持流行,不会被遗忘。

不过,你大可不必担心,因为 PHP 和 Python 都属于世界上最流行的编程语言。

PHP 用于构建 Wikipedia,Yahoo,WordPress,Friendster,MailChimp,Flickr 等许多“巨头”。

但不要以为 Python 没什么用,它也用来构建了 YouTube,Instagram,桌面版的Dropbox,Reddit,Bitbucket,Quora,Spotify,Pinterest,Facebook 的内部服务,以及 PayPal 系统的一部分。

框架

当你选择一项技术的时候,工具的多样性也是极其重要的,它会使你的工作简单、方便。如果一个技术为不同的任务提供了多种工具,程序员就不必每件事都要从头开始了。

PHP 最流行的框架是 Laravel,Symfony,CodeIgniter,Yii 1 and 2,Phalcon 和其他一些。

这些工具能帮你创建功能强大而整洁的应用程序,而 Python 却没有这么多引以为豪的框架,最好用的是 Django 和 Flask,但是,我们可以向你保证,随着 Python 社区的成长,这种情况会很快改变。

学习

这通常是学生第一个想要知道的问题,学习教育的过程越容易,意味着开始工作和赚钱越快。

Python 当然是这类的赢家,它的语法容易,简单易学,而 PHP 却不是这样。掌握 PHP 需要花费很多的时间和努力。

Python 允许你犯些小错但不会破坏代码,给新手一些信心继续学习。从新手的角度来看,想学一些更容易、更灵活的技术,而 Python 正是这样的技术。

你可以用 Python 创建安全的应用程序,但使用PHP却需要额外的工具。不过不要忘记,PHP 是专门用于 Web 开发的,也的确用在这方面较多。

Java 和 Python 哪个更好?一些开发人员声称 Python 比 Java 更有效率。但这应该先弄清 Python 和 Java 之间的区别是什么。

Java 和 Python 的区别

Java 是一种严格的类型语言,这意味着必须显式声明变量名。相比之下,动态类型的 Python 则不需要声明变量。

在编程语言上有许多关于动态和静态类型的争论,但有一点应该注意:Python 是一种语法简单的功能强大的语言,能够通过编写脚本就提供优秀的解决方案,并能够快捷地部署在各个领域。

Java 可以创建跨平台的应用程序,而 Python 几乎兼容当前所有操作系统。对新手来讲,Python 比 Java 更容易上手,而且代码易读性强,但是如果你想你的代码可以在任何地方都能执行的话,那么还是选择 Java 吧。

不过 Java 的可移植性也是有代价的,使用 Java 你需要购买更大的机器,消耗更多的内存,并且程序更加难以开发。

Java 比 Python 更复杂,没有技术背景的人学起来并非易事。

Python 和 C#


现在再来看下 C#。它们的技术差异很大,但都适用于 Web 开发。

Python 和 C# 的区别

简而言之,Python 原本就被设计的类似用英语表达一样,只要你使用合适的变量名称,许多表达式就很容易读懂。

另外,由于 Python 语法简单,没有像句法括号和大量的修饰词,各种类 C 的构造和不同的初始化变量,所以 Python 写的代码易读易学。

同时,C# 从 C++ 和 Java 遗传了很多原始表达的类 C 语法,更重要的是,C# 语法使我们必须遵循一定的规则来编写自已的方法或是继承类,伴随而来的是另一大串修饰词,还有一点不能忘记的是要把代码段放在括号内。

而 Python 只用 Shift+S 键就可以让代码看上去很整洁。至于编写脚本方面,值得一提的是 Python 的脚本是真正的脚本,能够被解释器执行。

你可以用任何编辑器打开它,修改后就可以立即运行。这在手边没有 IDE 或编译器的时候优势十分明显。而且使用 Python 更容易编写跨平台的脚本,甚至都不需要重新编译。

但是,我们要指出 Python 的一个不足,就是需要在机器上安装脚本解释器,至少要在一个包或可执行文件里打包上一个解释器。

从而使脚本的大小从几 KB 增加到十几 M,不过对于现代计算机来说,十几兆的空间需求基本可以忽略不计,所以这也不是什么大问题。

而 C# 需要 IDE 来编写程序,C# 的一个好处是,当你编写基于 Windows 平台的脚本时,它有强大的各类 Windows 系统组件支持。

例如,注册表、WMI、网络等内置工具。C# 可以使用 WINFORMS,你需要的时候可以很容易地创建图形化接口。

没法说 Python 和 C# 哪个更好,Python 比 C# 更容易学,开源库更多,但 C# 的标准库比 Python 的更好,其性能更高。

Python 和 Ruby


就第一语言而言,Ruby 和 Python 是最受欢迎的。Ruby 是非常流行的构建网站技术,其中最著名的是 Twitter(早期版本),Basecamp,Github,Airbnb,Slideshare,Groupon。

Python 和 Ruby 的区别

Ruby 和 Python 都是面向对象的语言,都是动态和灵活的。这些技术的主要区别在于他们解决问题的方式。Ruby 提供了不同的方法而 Python 通常只有一个。这个事实既是优势也是劣势。

最流行的 Ruby 框架是 Ruby on rails。它和 Django 非常类似,因为这两个框架都是为了解决相同的任务。

如果我们比较这些技术的社区,我们会发现他们几乎是一样的,然而形成这些团体的人是不同的。

Python 在数据科学和数学方面很受欢迎,所以在这里你可以找到很多的学者和教授。

记住,当你开发 Web 应用程序时,可以用 RoR 实现,也可以用 Django,两者都是快速高效的。如果开发偏重于大量计算和数据处理的应用,应该选择 Python。

任何技术成功的秘密在于围绕它所构建的社区,不同人群协同工作来确定其未来的发展演变,Python 的支持者是世界上规模最大和构成最多样化的一个团队,不仅有数以千计的个人开发者。

而且还有诸如谷歌,Yandex,Dropbox,Mozilla,微软(在 Visual Studio 中使用),英特尔等许多巨头公司,他们和其他许多公司一起,已经用 Python 创建了世界上最大的和最受欢迎的项目。

我国人工智能的飞速发展,无疑让 Python 成为 AI 时代下的新宠儿,作为最接近人工智能语言的 Python 越来越受到国家和社会的重视。

Python 现如今已经逐步在网络爬虫、数据分析、AI、机器学习、Web 开发、金融、运维、测试等多个领域扎根壮大。

随着它的被认可程度逐渐提高,学习并掌握这门语言的人群比例越来越大,无数公司也将为抢占该领域高精尖人才做着殊死搏斗!

可以说,未来谁拥有人工智能领域的技术权威,谁将会拥有新时代互联网最高话语权。

另一方面,Python 方向岗位的招聘人数需求以及薪资均在水涨船高。下面看一组 2018 年最新的薪酬数据:

尽管大家会调侃,又骗我学 XX,但是,学好 Python,必将让你在编程生涯中大刀阔斧,勇闯天涯!    

所以如果你对自己的专业/工作不满意,现在正是进入人工智能领域学习就业/转业的最佳时机。那如何系统学习 Python 呢?一般我们会经历以下几个阶段。

如何系统学习 Python


了解 Python 编程基础


一是变量、编程规范、基础语法等,这也是能够上手编写 Python 代码的前提。

二是数据结构,字符串、列表、字典、元组这些需要非常熟练,数据类型将贯穿你整个编程的始终。

这个部分一些简单的练习就是,自己构造一个数据类型,然后去实现基本的用法。

比如你自己构造一个列表,实现列表中数据的访问、更新、删除等基本操作,比如 len()、max()、min() 函数,以及 append()、count()、extend() 等方法。

函数和方法是实现数据增删改查的基本途径,如果你在实际操作中遇到数据操作的问题,可以在具体的数据类型下查找相关用法。

Python 函数及流程控制


学习 Python 的函数和控制语句,是真正去解决问题的过程。如何实现判断和循坏,如何将固定的功能模块封装成函数,这些不仅是写出代码的必要条件,也是训练编程思维的必经之路。

函数这个部分无外乎函数的定义、函数调用以及参数传递,但是要能够娴熟地写出函数实现对应的功能,需要注意的细节很多,也需要不断地训练。

流程控制则相对要好掌握一些,条件语句和循坏语句在不同的场景下练习几遍,知道判断和循环实现的过程,基本上就没问题了。

其实到这个地方,基本的 Python 知识你已经掌握了,你可以自己去做一些小项目,比如猜数字、各种转换器、记账工具……

利用 Python 做些事情


通常在学习一段时间之后,你就会有自我怀疑的过程,貌似真的懂了,但是离做出实际的东西又很远,这些东西是否有用?

这个时候不妨了解一些第三方库,你可以做更多的事情。比如用 pandas 作数据处理,用 Matplotlib 做数据可视化分析,用 BeautifulSoup 写爬虫,利用 Flask 搭建网站……

这些别人搭好的轮子,你直接拿来用就可以了。当然像写爬虫和网站,你还需要了解其他方面的一些知识(比如 HTTP、HTML、JS、数据库等)。

对于不同的库,内部的方法、函数你还需要去熟悉,开始的时候先掌握少部分最常用的方法,在遇到实际的问题的时候,再去查对应的更多的用法,这样会更高效。

深入 Python 编程


其实第三个阶段反复练习实践,你已经基本具备一些工作的技能了,比如 Python 数据分析、网络爬虫、写工具脚本……

首先你要了解 Python 的高级特性,如迭代器、生成器、装饰器等,了解类和面向对象的理念。

深入下去,你可以去探索 Python 的实现原理,Python 的性能优化,跳出 Python 语言本身,去了解计算机的交互原理,还有很长的路要走,但并不是每一个人都需要这个过程。

但这些高屋建瓴的东西,又是你在这个领域立足生根的重要条件,对于坚定走技术方向的人来说,这个过程是有必要的。这个时候你再去做应用层面的一些东西,又会有更加深刻的理解。

总结下来,学习 Python,最常见的坑有这些:

  • 很难找到合适且优质的学习资源,难以下手,或者随便找一些材料开始学习,极其容易从入门到放弃。
  • 遇到问题不知道如何寻找解决办法,甚至连问题都描述不清楚,经常被一些细小的问题卡住,学习效率不高。
  • 在理论学习中无法自拔,学习很久之后,发现还是不知道如何在实际的项目中去应用,缺乏解决问题的能力。
  • 看到别人的案例觉得好像是那么回事,但是自己去写代码的时候依然很困难,无法训练编程思维。