【01】Python:故事从这里开始

写在前面的话

最近在 Github 上面看到一个 100 天学习 Python 项目:

https://github.com/jackfrued/Python-100-Days

于是便想着抽时间将自己学习的东西再系统的整理一下,沉淀一下。切最近在学习 K8S,所以改系列博客权当看累 K8S 之后缓解一下!

谈谈 Python

在说这个之前,我们先分析一下现在编程语言的趋势,以下是 2019 年 5 月份 TIOBE 统计的编程语言排行榜:

这里可以简单的关注一下两个语言,一个是 Python,一个是 Go

Python 现在居于第四位,前三地位难以撼动,这算是我们的一个优势,但是也需要清楚的认知。

另外一个就是 Go,排行 19 而且还在掉,但并不能忽略它,原因很简单,未来肯定是容器加 K8S 的时代,而这两个都是基于 Go 开发。

包括前段时间被上传到 Github 上面 bilibili 后端的源码也是 Go 语言写就。就连 Python 大厂知乎去年也传出裁了大量 Python 程序员的传言,且将很多中间件已经改为 Go 语言来重构。

所以我们得对现在时代发展的趋势有个清楚的认知,这个语言是否需要再去学习。

当然,我个人是持保留态度的,因为我本身是运维,不属于那种重度用户,写运维工具和平台很多时候其实是看心情,所以我觉得很适合我。

这并不意味着学 Python 的目的就是这个。之前 Github 上有人提 issue 给我,说他熟悉 Python 和 Django(Python 最火的 WEB 框架),想开发一个大型 WEB APP,但听说 Python 很多地方不如 Java,所以在选 Python 或另外学 Java 而用 Java 上产生了迷茫。

我个人给的建议是:

首先,Java 确实是目前最好的选择,完整的生态能够解决我们很多问题,而且很多实现我们都可以找到现成的。但是我们也没必要因此就放弃 Python,所以劝他还是根据需求选自己擅长的,这样能够更好的完成开发。

还是那句话,没有垃圾的语言,只有垃圾的程序员。人家牛逼到 shell 都能写出叼的飞起的程序。所以,我选择 Python 并未后悔,它是我第一门靠自己能够写出程序的语言,我依然记得跑起来第一个 demo 时候喜悦心情。

整个行业本身最大的特点就是不断学习,不断完善,所以,永远年轻,永远热泪盈眶~ stay foolish,stay hungry!

Python 发展史

这是 Logo:

该 Logo 源于作者喜欢的 Monty Python 喜剧团体,Python 就是大蟒蛇的意思。

学习一门语言,我们需要首先知道他的发展历程,这是一切的基础:

1. 1989 年圣诞节, Guido von Rossum(Python 之父,龟叔) 为打发无聊时间写就。

2. 1991 年,第一个 Python 解释器诞生。

3. 1994 年,Python 发布 1.0,这意味着 Python 正式进入可以使用的稳定版。

4. 2000 年,发布 2.0 版本,生态渐渐开始形成。

5. 2008 年,Python 3.0 版本发布,这是重构以后的代码。

现在主流版本属于 Python 3 版本,当然很多老旧的系统可能是 Python 2 版本,2 版本终结于 2.7 版本,且在 2020 年将停止更新维护,这也是我们为啥使用 3 版本的原因,3 才是未来。

当然,对于我们用户来说,2 版本和 3 版本在使用过程中变化其实不是太大。所以学了 3 再去看看相对于 2 的改动,你也能很快入手 2 版本。这里便不做过多赘述。

另外,摆正心态,网上那种 7 天速成等乱七八糟的全是吹牛逼,除非他以前本身就是其他语言的牛逼人物。如果你不是,那就静下心。

简单谈谈关键优点:

1. 代码优雅,明确,简单,可读性强。

2. 解释型语言,能够直接看到源码(有利有弊)。

简单谈谈关键缺点:

1. 执行效率低,但是认为感受不明显,那是机器的事情。(这是主要的)

应用领域:

按理来说,都能使用,但是好或者坏的区别,推荐用于运维工具,系统,自动化测试,网络爬虫,可视化数据分析等等。当然 WEB 开发也是没问题的,且框架很多。

语言解释器:

所谓的语言解释器就是将语言代码编译成机器能够识别的语言的转换工具,在 Python 中有几个常常听到的:

1. CPython:官方的,C语言开发,我们用的就是这个。

2. PyPy:使用 JIT 对代码就行编译,可提高代码执行速度。

3. Jython:Java 写的,将 Python 编译成 Java 字节码。

至于其他,太冷门了,就不做多的解释了,感兴趣的可以自己去了解。

关于编程语言

编译型和解释型:

编译型:将代码编译成二进制文件,执行快,但兼容性不行,如 C。

解释型:执行时一条一条的编译,执行慢,但灵活,如 Python,PHP。

动态语言和静态语言:

动态语言:运行时采取检验数据类型,定义不用指定类型,如 Python。

静态语言:定义时候需要指定数据类型,如 C,Java。

强类型和弱类型:

强类型:一旦指定类型,除非强制转换,都在类型不变。

弱类型:数据类型可以忽略。

所以,Python 是一门动态解释型强类型定义语言。

机器码和字节码:

机器码:机器能够直接执行的,不需要编译,也就是全是 01 组合,执行效率最高。

字节码:一种中间码,二进制文件,能够转义成机器码,当然这也不是源码。

编码类型:

常见的编码类型:ASCII,UTF8,Unicode,GBK 等。

ASCII: 英文字母加点特殊符号,一共 128 个字符,8 个二进制第一位只能是 0,所以不是 256,如(01111111)

Unicode:世界上编码很多,如果以一种编码发送,再以另外一种编码接收,于是就出现了乱码。为了统一,于是便有了 Unicode,但是这也导致英文字母也需要 3-4 个字节,造成了资源浪费。

UTF8:相比于 Unicode,它属于一种可变长度的编码,可以节省空间。

GBK:中国国家编码,通用性不如 UTF8,但是比 UTF8 省空间。

开发环境搭建

Python 版本(目前最新版本 3.7.3),下载地址:

https://www.python.org/ftp/python/3.7.3/python-3.7.3.exe

开发工具,Pycharm 或者 VSCode:(新手推荐前者,简单易用)

Pycharm 下载地址,需要激活,网上有教程,当然也可以充钱:

https://download.jetbrains.8686c.com/python/pycharm-professional-2019.1.2.exe

VSCode 地址,免费:

https://vscode.cdn.azure.cn/stable/51b0b28134d51361cf996d2f0a1c698247aeabd8/VSCodeUserSetup-x64-1.33.1.exe

如果你用 VSCode 可以参考我之前关于搭建 Python 环境的博客:

https://www.cnblogs.com/Dy1an/p/10130518.html

我的 Python 最终安装地址是:D:Python37

这里为了保证我们最终安装的服务一直都是纯净的,所以我们一直使用的环境都会是新建的虚拟环境:

【1】进入安装目录,安装 virtualenv:我这里是 D:Python37Scripts 目录:

pip.exe install virtualenv

结果如图:

安装成功,但是提示我们 pip 版本过低,pip 是 Python 安装依赖包的程序,所以可以升级一下它:

cd ..
python.exe -m pip install --upgrade pip

值得注意的是,我们这里运维并没有将 Python 加入环境变量,所以我们所有命令其实都是绝对路径使用的。

【2】创建虚拟环境,我在 D 盘建立了一个目录,叫做 study,之后我们所有操作都在那里,我们也去这个目录下创建我们的虚拟环境:

D:Python37Scriptsvirtualenv.exe python37_env

结果如图:

结果如图,我们新建了一个用于存放我们代码的目录,code:

这样以后我们如果觉得这个环境玩坏了,不用重新安装 Python,重新创建一个虚拟环境就行了!

本身 Python 是自带 IDE 的,既然我们装了其它工具,当然就不它了。

开始

代码:

import this

运行结果:

这就是传说中的 Python 之禅~

我们的第一个程序:hello world

代码:

print("hello world")

执行结果:

注意,你们面板配色可能和我不同,因为我用了额外的配上,如果你感兴趣,可以查看我们的另外一篇博客:

https://www.cnblogs.com/Dy1an/p/10148154.html

小结

第一节就这些,主要谈谈 Python 的过去和现在未来,让你确定自己是否真的需要学习他。另外环境安装,工具这些并没有详讲,感兴趣的可以自己去看看。这些都是很简单的基础,随便学会。

当然,如果你实在有问题,也可以留言给我或者我博客旁边是有 QQ 的二维码~

原文地址:https://www.cnblogs.com/Dy1an/p/10844644.html