前两天写了篇文章,给想进程序员这个行当的同学们一点建议,没想到反响这么好,关注和阅读数都上了新高度,有点人生巅峰的感觉呀。今天趁热打铁,聊聊我最喜欢的编程语言——Python。
为什么要说Python
先说说编程语言,这里有一些梗,程序员之间因为使用不同的编程语言一直都存在着很多鄙视链,比如写汇编的鄙视写 C 的,写 C 的鄙视写 C++的,写C++的鄙视 写 C#,写Java 的鄙视前面所有和C相关的程序员,天天写脚本的程序员又一起鄙视 Java 程序员,写静态语言的和写动态语言的相互鄙视,写前端的和写后端的相互鄙视,Vim 程序员和 Emacs 程序员相互鄙视,然后一起鄙视需要使用 IDE 的程序员。还有一条最劲爆的,所有其他语言的程序员都鄙视 PHP 程序员,因为PHP 程序员说,PHP 是世界上最好的编程语言。
说了这么长长的一条鄙视链,只是为了引出今天的重点——Python。同「PHP 是世界上最好的编程语言」一样举世无双的,我们也有一句心法,是Python之父的名言:人生苦短,我用 Python。
Python功能强大,使用简单,实现一个功能往往只有一种方法。在我刚毕业工作的时候,就接触了Python和Perl两种脚本语言。这两种语言也可以说是非常鲜明的对比,在实现一个功能的时候,Perl 会有十八种实现方法,而且Python可能只有一种。Python开发者的哲学就是“用一种方法,最好是只有一种方法来做一件事”。
在池老师的文章里看到过有程序员这么评价Python:
免费,简洁,生态好,库丰富,操心少;之前刷机器学习的题,用 C# 写了一坨儿。结果人家引个 SciPy 库,三行代码搞定
这个评价我也是高度赞同。Python的生态环境确实很好,让你在开发的时候几乎不用操心太多。
AI时代的宠儿
Python有太多的适合机器学习的库了,而且都可以免费使。比如SciPy 是一个数值计算库,NumPy 是Python 另一个开源的数值计算扩展库,Pandas是基于 NumPy 的数据分析工具,matplotlib 是图形绘制库,最近火热的 Scikit-learn则是开源的机器学习框架。
也正因为这样,在AI时代,Python渐渐地变成了时代的宠儿。不知道如果AI真的这么一直发展下去,久而久之,Python会不会变成Excel这样的工具,人人都会用,事事都可用。
看看最新出炉的兵器排行榜,Python牢牢的占据着第4名。
Python其实不仅在做机器学习上是把好手,还有很多方面都是一流高手。比如有Scrapy这样优秀的做爬虫框架,强大的文本处理功能,Djnago这样出色的Web开发框架,还可以做自动化测试和运维以及数据分析等等。
所以,我认为无论是已经工作了的同学们或者是还在学校的同学们,多多少少都可以学习一些Python。如果是想要投身机器学习人工智能怀抱的,更是可以趁早开始了。
并不是天下无敌,也有自身的不足
Python自身的不足其实也挺多的。
首先语法上自成一派,让很多老手感到不习惯(比如语句结束不需要分号)。
其次Python 的速度很慢,在不同的任务上比C 语言大约慢数十倍到数千倍不等
再者由于全局解释器锁(GIL)的限制,单个Python 程序无法在多核上并发执行;(这个我不知道Python3是什么样的,没有去仔细研究过了,欢迎读者里的大神指点一下)。
不过最让人头疼的是,Python 2 和 Python 3 两个版本长期并行,各成一派,很多模块需要同时维护两个不同的版本,给开发者选择带来了很多不必要的混乱和麻烦。至于为什么Python 2 和 Python 3 会长期共存了数年之久,原因很复杂,我也说不清楚。但目前官方表示对 2 的支持到2020年。可能新入坑的同学会很纠结,Python2 的生态库远远大于Python3,那么应该要学习哪个版本呢?
我的建议是两个版本都学,语法上的差别也不是很大,如果非要选择一个先开始的话,我选Python2。(不要问我为什么,就是这么任性)
图片来自廖雪峰的Python教程
如何学习Python
扯了这么多,最后一部份放点干货,我们聊聊要如何学习Python。就我本人来说,会学Python,完全是机缘巧合,因为刚工作的时候,组里没人对Python特别熟,我是被安排自学研究Python,以备日后需要。学着学着,我慢慢的把开发的重心都转移动Python上面了。
要开始开发,先要安装,这里就不详细说了,说了你也记不住,macOS自带就有,其它系统网上搜一下,一大堆。
有了环境就需要开始学语法了。初学一门新的编程语言的语法时,我会先把赋值、条件判断和循环这三种语句学会了,这时其实基本的操作就都可以做了,然后再去扩展一些语言独特的东西,在Python里,你可以学习Python需的面向对象是怎么做的,学一些map,filter, lambda这样的高阶用法。然后估计有个3,5天的时间,就可以开始开发第一个Python应用程序了。
对于新手,在选择应用程序方向的时候,建议选择一个自己感兴趣的方向,例如对爬虫感兴趣,可以尝试写个Python爬虫去抓取微博或今日头条的内容, 对web应用感兴趣可以开发个人网站,如果有机器学习算法基础,可以用Python来实现你平时的算法,找个数据集来跑跑(这方面我也比较弱,正在恶补学习中,欢迎有兴趣的同学一起来研究)。再或者可以做个推荐系统,算法可以参照我之前的一篇文章(推荐系统入门),可用Python来实现一个小型的推荐系统。(最近自己刚刚实现了一下这个程序,有兴趣的同学需要帮助可以留言)
人生苦短,我用 Python!大家一起加油吧www.huazongyulept.cn。
欢迎大家关注我的公众号,你的关注就是我坚持下去最大的动力。另外大家有什么建议或有什么想了解的,也欢迎留言给我,谢谢。

投入机器学习的怀抱?先学Python吧的更多相关文章

  1. 从零开始学python

    自从20世纪90年代初Python语言诞生至今,它已被广泛应用于系统管理任务的处理和Web编程.今天就来给大家看看学Python的五大优势吧! NO.1 全球三大主流编程语言之一 python是一种面 ...

  2. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  3. 学Python后到底能干什么?

    Python是一种什么语言? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Jav ...

  4. 为什么学Python语言,只需四步全面了解Python语言

    为什么学Python语言,只需四步全面了解Python语言每个时代都会悄悄犒赏会选择的人,Python现在风口的语言Python--第三大主流编程语言Python , 是一种面向对象的解释型计算机程序 ...

  5. 数百种编程语言,而我为什么要学 Python?

    是应用率最高.长期霸占排行榜的常青藤 Java?是易于上手,难以精通的 C?还是在游戏和工具领域仍占主流地位的 C++?亦或是占据 Windows 桌面应用程序半壁江山的 C#?…… 我想,每个人可能 ...

  6. 小白学 Python(1):开篇

    人生苦短,我用 Python 引言 大家好,可能大家都对我比较熟悉了,不熟悉请去面壁(现在熟悉一下也来得及)~ 简单做一个自我介绍,我是极客挖掘机的唯一作者,一位油腻的 Java 程序员[臭鸡蛋什么的 ...

  7. 尚学python课程---12、python语言介绍

    尚学python课程---12.python语言介绍 一.总结 一句话总结: 1.操作简单:简便计算:允许通过单个“import”语句后跟一个函数调用来完成复杂的计算.虽慢 2.库丰富:比如人工智能和 ...

  8. 小白学 Python 数据分析(21):pyecharts 好玩的图表(系列终篇)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. 程序员如何高效学Python,如何高效用Python挣钱

    本人在1年半之前,不熟悉Python(不过有若干年Java开发基础),由于公司要用Python,所以学习了一通.现在除了能用Python做本职工作外,还出了本Python书,<基于股票大数据分析 ...

随机推荐

  1. Luogu P1337 [JSOI2004]平衡点 / 吊打XXX

    一道入门模拟退火的经典题,还是很考验RP的 首先我们发现神TM这道题又和物理扯上了关系,其实是一道求广义费马点的题目 首先我们可以根据物理知识得到,当系统处于平衡状态时,系统的总能量最小 又此时系统的 ...

  2. Linux Shell完成Qt程序的自动部署

    #!/bin/sh #取当前脚本的绝对路径 srcDir=$(cd ")";pwd) #设置库所在路径 libDir=${srcDir}"/J1900RunLib/*&q ...

  3. css-文本左右对齐

    1.给目标元素加 display:block;text-align:justify; 2.如果最后一行没充满整行,因为text-align:justify,所以字字之间会有间隔,应给目标元素加伪类,添 ...

  4. cookie详解(含vue-cookie)

    今天看到一篇cookie的文章,写的特别详细,感谢 晚晴幽草轩 的分享,原文链接http://mp.weixin.qq.com/s/NXrH7R8y2Dqxs9Ekm0u33w 原文如下,记录到此供以 ...

  5. Linux内核分析——进程的描述和进程的创建

    进程的描述和进程的创建 一. 进程的描述 (一)进程控制块PCB——task_struct 1.操作系统的三大管理功能包括: (1)进程管理 (2)内存管理 (3)文件系统 2.PCB task_st ...

  6. 网易云课堂-----Linux内核分析-----期末主观题

    姚歌 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 下面是对8个课题的 ...

  7. 《Linux内核分析》第七周: 可执行程序的装载

    LINUX内核分析第七周学习总结--可执行程序的装载 杨舒雯(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/ ...

  8. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  9. 读<架构漫谈>系列有感

    读了这一系列博文,我对架构也有了大致的了解.在简单的阅读之后,我解决了几个问题. 第一个问题,什么是架构? 要学习架构,首先要知道架构.那么,什么是架构呢?引用<架构漫谈(一)>里的话就是 ...

  10. 第二次sprint

    一.这次冲刺就是实施阶段了,主要对程序进行一次骨架的构建,基本上已经完成了界面的设计,但是在算法上还有很大漏洞,整个程序还是属于不成熟阶段. 二.这是我们的界面 三.已经有的功能:随机生成题目并算出答 ...