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

写在前面的话html

 

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

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

因而便想着抽时间将本身学习的东西再系统的整理一下,沉淀一下。切最近在学习 K8S,因此改系列博客权当看累 K8S 以后缓解一下!程序员

 

 

谈谈 Pythongithub

 

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

这里能够简单的关注一下两个语言,一个是 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 环境的博客:

http://www.noobyard.com/article/p-bjnikxoy-cm.html

个人 Python 最终安装地址是:D:\Python37

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

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

pip.exe install virtualenv

结果如图:

安装成功,可是提示咱们 pip 版本太低,pip 是 Python 安装依赖包的程序,因此能够升级一下它:

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

值得注意的是,咱们这里运维并无将 Python 加入环境变量,因此咱们全部命令其实都是绝对路径使用的。

 

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

D:\Python37\Scripts\virtualenv.exe python37_env

结果如图:

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

这样之后咱们若是以为这个环境玩坏了,不用从新安装 Python,从新建立一个虚拟环境就好了!

自己 Python 是自带 IDE 的,既然咱们装了其它工具,固然就不它了。

 

 

开始

 

代码:

import this

运行结果:

这就是传说中的 Python 之禅~

 

咱们的第一个程序:hello world

代码:

print("hello world")

 

执行结果:

注意,大家面板配色可能和我不一样,由于我用了额外的配上,若是你感兴趣,能够查看咱们的另一篇博客:

http://www.noobyard.com/article/p-xkoqdkne-ek.html

 

 

小结

 

第一节就这些,主要谈谈 Python 的过去和如今将来,让你肯定本身是否真的须要学习他。另外环境安装,工具这些并无详讲,感兴趣的能够本身去看看。这些都是很简单的基础,随便学会。

固然,若是你实在有问题,也能够留言给我或者我博客旁边是有 QQ 的二维码~