AI 学习之路——轻松初探 Python 篇(一)

这是「AI 学习之路」的第 1 篇,「Python 学习」的第 1 篇

前言

1. Python 篇的组织结构

不管是学习人工智能还是大数据,Python 都是基本必学的,而且如果大家自己有一定的语言基础,会发现 Python 是非常好入门的,我自己大概花了 1 个下午入门了一下基本的语法。

我会花 3 到 4 篇的篇幅给大家作一下基本的入门。当然,这不是说我们学习人工智能或者大数据,对 Python 的了解程度到这么多就够了,也不是说我在整个人工智能系列的写作过程中,只会写这几篇 Python 的文章。相反,我十分重视 Python 语言本身的学习,我也会分享很多 Python 相关的原创。

对 Python 掌握的越熟练,必然会对后面学习人工智能或者大数据这样的热门技术越有帮助,不仅如此,工作中的很多场景,Python 都可以很好的解决,极大的提升我们的工作效率,即使我工作中的主语言并不是 Python。大家学习 Python 的过程中,一定会对此有所感受的。

所以,Python 的文章会和别的文章有所穿插,今天我发布一篇算法相关的,明天可能就推一篇 Python 的了,我的承诺就是,所有文章都会划分好类别,并且有连贯性,即使比较晚关注的读者,也可以循序渐进的进行学习。

2. 如何自主学习 Python

现在的网络资源很丰富,Python 的资料更是层出不穷。想入门 Python 的话,这里推荐给大家两个渠道:

第一个就是推荐大家去看一下「廖雪峰的 Python 教程」,强烈推荐,我就是一个下午看的他的教程进行学习的。

第二个是「Codecademy」这个网站,这个网站上面有很多语言的入门教程,它是一种引导式的教学方式,不仅有文档,而且可以在线的进行编译和运行,可以说是手把手了,质量很高。不过有一点尴尬的是,可能大部分的教程是英文,不过好在教程本身不复杂,抠一抠还是能看懂的,它的界面是这样的:

当然啦,通过看我的公众号文章来入门也是完全可以的。

还是那句话,Python 肯定不是说入了门就够了,深度的研究大家可以多买书,看看博客,多写写。当然,我也会作 Python 中高级技术的分享的。最重要的是坚持,可能很多人都和我差不多,工作或者学习的主力语言并不是 Python,需要在业余时间来学习,这很考验一个人的意志力,想做的突出,就得忍受寂寞。

没关系,至少还有我和你一起撸码。

Python 简介

1. Python 的优势

Python 是一种非常高级的语言,实现同样的逻辑,C 语言和 Java 可能要用比 Python 多数倍甚至几十倍的代码才能完成。Python 简单优雅,尽量写容易看明白的代码,尽量写少的代码。

我们可以类比 Java 和 C 语言的这种差异。C 语言,在构建实体对象的时候,需要用代码手动的去在内存开辟空间,然后把开辟好的这段空间赋予某个对象使用,使用完了,还得手动去把这部分空间给释放掉,好处是对内存或者是一些硬件的把控力很强,而且强制要求程序员去严格的监管这些资源的使用,但不用多说,这样太麻烦了,我为了写一个业务逻辑,竟然要写这么多和业务无关的代码。

而 Java 就省事多了,JVM 的垃圾回收机制都帮你做好了这些事,它会通过诸如可达性算法这样的方式,自动的标记出哪些内存空间是可回收的,然后在你代码没有任何体现的情况下进行内存的回收。当然,缺点也显而易见,你根本不知道垃圾回收机制到底干了什么,它的拓展性和可控性就不是那么出色了,如果你需要特别的关注回收上的事,会发现特别麻烦和不可控。

Python 相比 Java,当然也少操心了很多事,比如异步上的事,Java 处理起来就麻烦多了。Python 因为提供了非常完善的基础代码库,轮子非常完备,所以几乎可以覆盖你能想到的应用范围。

值得一提的是,Python 近年来发展迅猛,人工智能、大数据等最前沿热门的技术,Python 都能很好的支持和应用。GitHub 2017 年发布的开发语言活跃度排名上,Python 第一次超过了 Java,跃升到第二名,仅次于 JS。

2. Python 的劣势

有得有失,Python 也不是完美的。廖大总结的挺好,我简单的概述下。

首先Python 的运行速度是比较慢的,因为 Python 是一种解释型语言,Python 代码在运行的时候,会一行一行的把代码翻译成计算机可以理解的机器码,可以想像这个过程是很慢的。而 C 语言在运行之前就已经把代码编译成机器码了,执行过程就会特别快。

但实际上这个速度差距,并不是不可以接受的,廖大大也在他文中做了一个很有意思的比喻,这里引用下,大家自行体会这种速度差距的影响:

大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。例如开发一个下载MP3的网络应用程序,C 程序的运行时间需要 0.001 秒,而Python程序的运行时间需要 0.1 秒,慢了 100 倍,但由于网络更慢,需要等待1秒,你想,用户能感觉到 1.001 秒和 1.1 秒的区别吗?这就好比 F1 赛车和普通的出租车在北京三环路上行驶的道理一样,虽然 F1 赛车理论时速高达 400 公里,但由于三环路堵车的时速只有 20 公里,因此,作为乘客,你感觉的时速永远是 20 公里。

还有一个缺点,就是 Python 是不能加密的,如果你的应用是 Python 写的,当你发布的时候,等于说就是公开了自己的源代码。不过在互联网时代,靠卖软件来生存的商业模式越来越少了,更多的是靠服务和网站,不仅如此,在这个提倡开源精神的时代,源代码开源本身并不是很可怕,也不要过分高估自己代码的价值。

Python 运行需要一个编辑器来将 Python 代码转化为特定的操作系统可理解的代码。它不像 Java,任何可以运行 Java 虚拟机的设备都可以运行 Java 的应用。

安装 Python

OK,说十句话不如做一件事,那我们现在就行动起来开始安装 Python 吧。

Python 3.x 和 2.x 是不兼容的,我们作为初学者,自然就不用考虑一些历史因素了,直接上 3.x。这里我就不花费篇幅去展开介绍安装过程了,网上很多教程,需要注意的主要是 Windows 小伙伴们一定要记得配置好环境变量。

Python 文件是需要解释器去执行的。安装好 Python 后,我们实际上就已经获得了一个官方的解释器:CPython,它是使用最广泛的 Python 解释器。还有很多其他的解释器。比如 PyPy,它相比 CPython 提升了速度;Jython 和 IronPython 则是在其他平台上的解释器,可以把 Python 代码编译成 Java 或者 .Net 字节码。

一切准备就绪,在 Windows 控制台中输入 python 并回车,或者在 Mac 和 Linux 的终端中输入 python3 如果出现这个界面,说明你安装成功了!

按照惯例,我们是不是得 Hello, world 一下?

在 >>> 后输入代码吧!

>>> print ('hello, world')
hello, world

原文发布于微信公众号 - WeaponZhi(WeaponZhi)

原文发表时间:2017-11-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据挖掘DT机器学习

关于海量数据处理分析的经验总结

笔者在实际工作中,有幸接触到海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。原因有以下几个方面: 一、数据量过大,数据中什么情况都可能存在。如果说有10...

3457
来自专栏Java架构师进阶

阿里优酷面试经历——学无止境

最近几周与阿里的面试官聊了聊,趁着我还有记忆先写下来。本人近5年工作的JAVA程序员,技术不精。大伙不必太过吐槽。哈哈。我曾两次时间投过简历。

1115
来自专栏IT大咖说

降低大数据开发难度,轻量级计算实例

内容来源:2018 年 1 月 27 日,润乾软件创始人蒋步星在“TECH INSIGHT 暨 ArchData技术峰会成都站”进行《轻量级大数据引擎》演讲分享...

934
来自专栏Java帮帮-微信公众号-技术文章全总结

面试重点复习大纲

给Java新手的一些建议-面试指南 面试重要知识点复习大纲 一、Java基础部分 (笔试与面试都会有的) 1.数组中的排序问题(笔试或者机试,前者可能性...

3363
来自专栏腾讯移动品质中心TMQ的专栏

测试分析?就这么简单!

什么是测试分析? 在软件测试过程中,以最小的成本将软件质量风险降至最低,这就是精准测试。宏观上,测试分析是响应精准测试的实践,贯穿整个测试过程,并对整个测试过程...

2549
来自专栏不二小段

【QQ/微信个人号变身机器人】炸群+远程监控个人PC的尝试

最近简直惰怠。公众号的粉丝都开始负增长了。 其实一直没有闲着,只不过没写成文字。大家可以在优酷关注我的账号:不二小段,我会把日常一些探索录屏给大家。 今天来简单...

5347
来自专栏一枝花算不算浪漫

[Java面试一]面试复习大纲.

3459
来自专栏编程

5个酷毙的Python工具

工欲善其事必先利其器,一个好的工具能让起到事半功倍的效果,Python社区提供了足够多的优秀工具来帮助开发者更方便的实现某些想法,下面这几个工具给我的工作也带来...

2258
来自专栏安恒信息

安恒天池云安全平台“八大能力”助力企事业单位安全上云

安恒天池云安全运营平台是汇聚了安恒十年的安全攻防能力的云安全运营平台。向下兼容不同云平台,向上兼容不同的安全产品,通过不断汇聚安全能力,赋能云平台,从云监测、云...

3356
来自专栏软件成本造价评估

软件项目造价评估时的数据类别有哪些?

软件项目造价评估时的数据类别都有哪些分类呢?通常,在进行软件造价时的数据类别可分为3类:业务数据、引用数据、编码数据。 业务数据:也称为用户的核心数据...

970

扫码关注云+社区