写在前面的话

最近在 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:\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")

执行结果:

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

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

小结

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

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

【01】Python:故事从这里开始的更多相关文章

  1. 01.python基础知识_01

    一.编译型语言和解释型语言的区别是什么? 1.编译型语言将源程序全部编译成机器码,并把结果保存为二进制文件.运行时,直接使用编译好的文件即可 2.解释型语言只在执行程序时,才一条一条的解释成机器语言给 ...

  2. 真正“搞”懂http协议01—背景故事

    去年读了<图解HTTP>.<图解TCP/IP>以及<图解网络硬件>但是读了之后并没有什么深刻的印象,只是有了一层模糊的脉络,刚好最近又接触了一些有关http的相关内 ...

  3. day 01 python基础

    1.计算机历史 2.python历史 宏观: python2和python3的区别: python2  源码不标准,混乱,重复代码过多 python3  统一标准,去除重复代码 3.python环境 ...

  4. 01 Python初识

    基础: 1.后缀名是py       ATT: 单个文件执行,后缀无所谓 2.两种执行方式 终端 python+文件路径 解释器内部: 直接执行 3.解释器路径: #/usr/bin/env pyth ...

  5. 01: Python基本数据类型

    目录: 1.1 列表和元组 1.2 字符串 1.3 字典 1.4 集合 1.1 列表和元组返回顶部 1.列表基本操作 1. 列表赋值 a = [1,2,3,4,5,6,7,8] a[0] = 100 ...

  6. 01.Python基础-5.函数

    1 函数的介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 内置函数 自定义函数 2 函数的定义和调用 2.1 函数的定义和调用 定义 def 函数名([参数]): 代码块 [ ...

  7. 01.Python基础-4.字符串

    1 字符串初识 字符串编码 字符串定义:多个字符(双引号或单引号中的数据)组成 字符串下标 类似列表list 格式化 就是占位符 最常用%s %d %f等等 转义字符 转义字符 描述 \ (在行尾时) ...

  8. 01.Python基础-3.集合容器

    1 列表list 1.1 列表介绍 Python内置的一种数据类型是列表:list. 有序的集合,可随时添加和删除其中的元素. 每个元素都分配一个数字 --它的位置,或索引.0,1,2,3-- 可存放 ...

  9. 01.Python基础-1.Python简介及基础

    python简介 python简介 python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum(吉多·范罗苏姆)于1989年发明,第一个公开发行版发行于1991年. ...

  10. 01 Python初探

    Python初探 Become a better version of yourself! 诞生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年开始写Python ...

随机推荐

  1. Windows+Qt+MinGW使用gRPC

    本文参考博客文章Qt gRPC 简单应用进行了亲自尝试,特此记录以下过程,为后人提供经验.我的环境:Windows10 x64需要依赖MSYS2环境(一个类Unix环境,包管理器)MSYS2 gith ...

  2. 以一道ctf学习python脚本

    今天做了省赛初赛的ctf比赛,过程真是忐忑,奋战了6个小时(本来是三个小时的,哈哈哈哈). 不说了! 不说了! 说多了都是泪~ 看题吧,题目就是一道流量分析题,里面有一段icmp包,icmp包的ttl ...

  3. Outlook API

    1.Outlook简介 若要从Outlook 外控制Outlook对象,必须在编写代码的工程中建立对Outlook对象库的引用. 1.1  Outlook Application说明: 代表整个Mic ...

  4. LeetCode——Duplicate Emails(使用group by以及having解决分组统计结果)

    Write a SQL query to find all duplicate emails in a table named Person. +----+---------+ | Id | Emai ...

  5. 【已采纳】新项目第一次怎么上传到github里面

      言归正传,最近学习了怎么将新创建的本地代码上传到github上,这里简单的记录一下,我喜欢使用命令行,这里全用命令行来实现,不了解git命令的可以去了解下. 第一步:建立git仓库 cd到你的本地 ...

  6. MySQL的过滤(极客时间学习笔记)

    数据过滤 SQL的数据过滤, 可以减少不必要的数据行, 从而可以达到提升查询效率的效果. 比较运算符 在SQL中, 使用WHERE子句对条件进行筛选, 筛选的时候比较运算符是很重要. 上面的比较运算符 ...

  7. openstack 创建实例报错 **aborted: Failed to allocate the network(s), not rescheduling

    消息 Build of instance 6320b5f2-edc2-4e8e-b07c-0047f7ed8f6a aborted: Failed to allocate the network(s) ...

  8. 重新学习SpringMVC——基础

    2. SpringMVC_HelloWorld3. SpringMVC_RequestMapping_修饰类4. SpringMVC_RequestMapping_请求方式5. SpringMVC_R ...

  9. org.slf4j.helpers.Log4jLoggerFactory is not on classpath. Good!

    View Javadoc 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contrib ...

  10. springboot启动时控制台不显示映射的URL

    背景 今天,第一次使用 2.2.0 版本的springboot,在访问接口时发现访问不到,于是在控制台进行 URL 搜索,发现并相关没有内容 原因 springboot版本差异,切换回 2.0.5.R ...