8000
We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
这是「AI 学习之路」的第 1 篇,「Python 学习」的第 1 篇
不管是学习人工智能还是大数据,Python 都是基本必学的,而且如果大家自己有一定的语言基础,会发现 Python 是非常好入门的,我自己大概花了 1 个下午入门了一下基本的语法。
我会花 3 到 4 篇的篇幅给大家作一下基本的入门。当然,这不是说我们学习人工智能或者大数据,对 Python 的了解程度到这么多就够了,也不是说我在整个人工智能系列的写作过程中,只会写这几篇 Python 的文章。相反,我十分重视 Python 语言本身的学习,我也会分享很多 Python 相关的原创。
对 Python 掌握的越熟练,必然会对后面学习人工智能或者大数据这样的热门技术越有帮助,不仅如此,工作中的很多场景,Python 都可以很好的解决,极大的提升我们的工作效率,即使我工作中的主语言并不是 Python。大家学习 Python 的过程中,一定会对此有所感受的。
所以,Python 的文章会和别的文章有所穿插,今天我发布一篇算法相关的,明天可能就推一篇 Python 的了,我的承诺就是,所有文章都会划分好类别,并且有连贯性,即使比较晚关注的读者,也可以循序渐进的进行学习。
现在的网络资源很丰富,Python 的资料更是层出不穷。想入门 Python 的话,这里推荐给大家两个渠道:
第一个就是推荐大家去看一下**「廖雪峰的 Python 教程」**,强烈推荐,我就是一个下午看的他的教程进行学习的。
第二个是**「Codecademy」**这个网站,这个网站上面有很多语言的入门教程,它是一种引导式的教学方式,不仅有文档,而且可以在线的进行编译和运行,可以说是手把手了,质量很高。不过有一点尴尬的是,可能大部分的教程是英文,不过好在教程本身不复杂,抠一抠还是能看懂的,它的界面是这样的:
当然啦,通过看我的文章来入门也是完全可以的。
还是那句话,Python 肯定不是说入了门就够了,深度的研究大家可以多买书,看看博客,多写写。当然,我也会作 Python 中高级技术的分享的。最重要的是坚持,可能很多人都和我差不多,工作或者学习的主力语言并不是 Python,需要在业余时间来学习,这很考验一个人的意志力,想做的突出,就得忍受寂寞。
没关系,至少还有我和你一起撸码。
Python 是一种非常高级的语言,实现同样的逻辑,C 语言和 Java 可能要用比 Python 多数倍甚至几十倍的代码才能完成。Python 简单优雅,尽量写容易看明白的代码,尽量写少的代码。
我们可以类比 Java 和 C 语言的这种差异。C 语言,在构建实体对象的时候,需要用代码手动的去在内存开辟空间,然后把开辟好的这段空间赋予某个对象使用,使用完了,还得手动去把这部分空间给释放掉,好处是对内存或者是一些硬件的把控力很强,而且强制要求程序员去严格的监管这些资源的使用,但不用多说,这样太麻烦了,我为了写一个业务逻辑,竟然要写这么多和业务无关的代码。
而 Java 就省事多了,JVM 的垃圾回收机制都帮你做好了这些事,它会通过诸如可达性算法这样的方式,自动的标记出哪些内存空间是可回收的,然后在你代码没有任何体现的情况下进行内存的回收。当然,缺点也显而易见,你根本不知道垃圾回收机制到底干了什么,它的拓展性和可控性就不是那么出色了,如果你需要特别的关注回收上的事,会发现特别麻烦和不可控。
Python 相比 Java,当然也少操心了很多事,比如异步上的事,Java 处理起来就麻烦多了。Python 因为提供了非常完善的基础代码库,轮子非常完备,所以几乎可以覆盖你能想到的应用范围。
值得一提的是,Python 近年来发展迅猛,人工智能、大数据等最前沿热门的技术,Python 都能很好的支持和应用。GitHub 2017 年发布的开发语言活跃度排名上,Python 第一次超过了 Java,跃升到第二名,仅次于 JS。
有得有失,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 的应用。
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
开篇大吉,加入我们一起学习AI,现在群的氛围很好,质量很高 写在开篇第一天,我想和你做朋友
The text was updated successfully, but these errors were encountered:
WeaponZhi
No branches or pull requests
前言
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 语言在运行之前就已经把代码编译成机器码了,执行过程就会特别快。
但实际上这个速度差距,并不是不可以接受的,廖大大也在他文中做了一个很有意思的比喻,这里引用下,大家自行体会这种速度差距的影响:
还有一个缺点,就是 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 一下?
在 >>> 后输入代码吧!
The text was updated successfully, but these errors were encountered: