前两天写了篇文章,给想进程序员这个行当的同学们一点建议,没想到反响这么好,关注和阅读数都上了新高度,有点人生巅峰的感觉呀。今天趁热打铁,聊聊我最喜欢的编程语言——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. Codeforces round 1083

    Div1 526 这个E考试的时候没调出来真的是耻辱.jpg A 求个直径就完事 #include<cstdio> #include<algorithm> #include&l ...

  2. BZOJ4883 棋盘上的守卫 基环树、Kruskal

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=4883 题意:给出一个$N \times M$的棋盘,每个格子有权值.你需要每一行选中一 ...

  3. webstorm破解汉化

    一.下载webstorm软件和汉化包 webstorm安装包下载链接 : 链接: https://pan.baidu.com/s/1VmOPNVL2GRgAb_0tAJhy8A 密码: am7e 汉化 ...

  4. sqlserver 发送http请求

    sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures' ...

  5. JVM调优-GC参数

    一.Throughput收集器(吞吐量)-XX:+UseParallelGC-XX:+UseParallelOldGC *参数调整:通过调整堆大小,减少GC停顿时间,增大吞吐量增强堆大小可以减少Ful ...

  6. 11.10 (下午)开课二个月零六天(ajax验证用户名,ajax调数据库)

    用ajax验证用户名是否可用 testuid.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...

  7. PHP从入门到精通(六)

    PHP中的错误处理 1.PHP的错误级别:见表格.2.调整PHP错误报告级别:PHP中,调整错误报告级别的方式有两种: ①修改PHP.ini文件的配置项.a.会导致在当前服务器环境下所有PHP文件都受 ...

  8. 研究C语言的新型编译环境TCC

    C语言综合研究1 搭建一个tcc环境 研究过程: 问题引出:为什么要使用tcc环境,甚至连图形界面都没有,为什么要使用这样的化境? 按照我们学习的本质来讲,可能是为了体验C语言底层的相关特性,但是在研 ...

  9. 《linux内核设计与分析》内核模块编程

    内核模块编程 一.准备工作 虚拟机:VMware Workstation 12操作系统:ubuntu当前内核版本:linux-headers-4.4.0-22-generic 二.有关于内核模块的知识 ...

  10. UML类图及类与类之间的关系

    原文地址:http://www.uml.org.cn/oobject/201211231.asp 类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的 ...