Python日课-第1周

文章目录

曾老师的 Python 课 第一课的所有内容已经全部发布,包括课程 PPT、课程视频都可以免费获取,可以使用微信扫描下面的二维码进群获取。

请进群索取课程 PPT 以及视频播放地址

这套课程有两条教学线:

  1. 现场教学,约两周一次,每次一小时,主要为实际案例的讲解。
  2. 微信群教学,每日一次,由易到难讲解 Python 知识点,Python 相关的小故事,业界八卦,IT 行业最新信息。

本文是 Python 课开启 第一周(2020-12-31至 20201-01-05) 每日 Python 知识点的整理。

Python 小史(2020-12-31)

各位Python同学早上好啊,今天的Python小知识来啦。

Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。

像 Perl 语言一样, Python 源代码同样遵循 GPL(GNU General Public License) 协议。

从上面的信息可以看出,Python是个接近三十年的「老」语言了。另外几个著名的大家经常谈论的「老」语言是哪些呢?

  • 1964 – BASIC
  • 1970 – Pascal
  • 1972 – C
  • 1980 – C++
  • 1995 – Java
  • 1995 – PHP
  • 1995 – JavaScript
  • 2009 – Go

上面的语言大家知道哪些呢?

Python的发明者 Guido van Rossum 是荷兰人,所以著名的Python之禅中有一句:

Although that way may not be obvious at first unless you're Dutch.

Python之禅的作者 Tim Peters 解释说这里的荷兰人指的是吹捧 Python 的作者 Guido van Rossum 的彩虹屁:等同于“你个荷兰佬他娘的还真是个天才”。

今天有两个小知识,

  1. Python和其他语言的发明年份。
  2. Python的作者是个荷兰人。

你记住了吗?

完毕(曾老师地铁上手打 [微笑] )

Python 之禅(2021-01-01)

各位Python同学新年好啊!2021年的第一天的 Python 小知识来啦。

昨天的小知识里面提到Python之禅,感觉很高深的样子。今天我们继续聊聊这个禅。

你在Python环境中输入

1import this

就能得到Python之禅。

The Zen of Python

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than right now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

Python之禅就是上面这段文本,它描述了Python的设计思想,和写 Python 代码的时候秉承的理念。我在 知乎 上找到了一篇较好的译文。

优美 > 丑陋

明确 > 隐晦 (1)

简单 > 复杂

复杂 > 繁复 (2)

扁平 > 嵌套

稀疏 > 拥挤(3)

可读性很重要(4)

固然代码的实用性比洁癖更重要,

所谓的“特例”也往往没有特殊到必须违背上述规则的程度

除非必要,否则不要无故忽视异常(5)

如果遇到模棱两可的逻辑,请不要自作聪明地瞎猜。

应该提供一种,且最好只提供一种,一目了然的途径

当然这是没法一蹴而就的,除非你是荷兰人(6)

固然,立刻着手 好过 永远不做。

然而,永远不做 也好过 闷头蛮干

倘若你的实现很难解释,它一定不是个好主意

倘若你的实现一目了然,它可能是个好主意(7)

命名空间大法好,同志们要多多搞!

考据:

  1. 该引入的包显式地一条条罗列出来,不要合并;不要用星号;不要在方法里藏意想不到的的副作用,等等等等。还一个例子,有一种著名的软件设计原则 Convention over Configuration(约定优于配置)如果做得不谨慎,比如你约定的规则并不是真的业界惯例,就会违背这条。
  2. StackOverflow上针对这句话的提问: 必要的复杂总是难免的,繁复啰嗦的代码却是不可接受的。你可以做很多事,很复杂的事,但是不能啰嗦,更不能难以理解。复杂不是罪,但是代码需要更有逻辑、更有机的组织。简而言之,Simple > Complex > Complicated > Chaotic。(另外,以上内容仅限Python语境,不同语境下对Complex和Complicated的定义可能会有所不同)
  3. 有人喜欢写很长的one-liner 比如:lambda L: [] if L==[] else qsort([x for x in L[1:] if x< L[0]]) + L[0:1] + qsort([x for x in L[1:] if x>=L[0]]) # 一行流快速排序 这样固然可以炫技,但是也很难懂啊。让其他人读不懂的代码不是优雅的代码
  4. 写这篇文章的动机之一就是看到有人把 Readability counts 翻译成可读性计数
  5. 实操中很多人不注意 catch 完就 log 一下就不管了,很快啊,这样好么?这样不好。软件界一般都讲 Let it fail,学名为 Fail-fast 法则。简而言之就是整个项目周期中越早暴露的问题,其修复成本越低。等到你的项目上线了结果出来各种诡异的bug你会毫无头绪,结果只能去翻长长的日志。所以我劝各位,不要再犯这样的聪明,小聪明。
  6. 本文作者 Tim Peters 解释说这里的荷兰人指的是 Python 的作者 Guido van Rossum 吹捧 gvanrossum 的彩虹屁:等同于“你个荷兰佬他娘的还真是个天才”
  7. 贯穿整个 PEP 20 的核心就是一句话“你的代码是给别人读的!”。从这个角度而言,难以理解、难以维护的代码,即便是“高性能”,也肯定不是好代码;但是反过来,一目了然的逻辑也不代表就一定是好代码。编程可太难了

今天的Python小知识就到这里啦,新年新气象,2021加油,你能掌握Python!

Python发明历史(2021-01-02)

各位Python同学上午好啊!经过昨天的修整,熬夜跨年的疲惫一扫而空!

昨天曾老师二倍速拉完B站 《2020最美的夜》,三倍速拉完得到《时间的朋友》,我感觉有了新的目标。爷青回,从未来看现在,做太阳影响别人,做火炬指引方向。从Python开始,改变我们的 2021!

今天的 Python 小知识,聊一下 Python 的发明历史吧。

下面的内容来自于知乎专栏:https://zhuanlan.zhihu.com/p/67469889

1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家(学术),但他更加享受计算机带来的乐趣(工程)。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。

Guido接触并使用过诸如Pascal、C、Fortran等语言。这些语言的基本设计原则是让机器能更快运行。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低。

所有的编译器的核心是做优化,以便让程序能够运行。这种编程方式让Guido感到苦恼。Guido希望有一种语言,这种语言既能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。

于是Guido在1989年,那个无聊的圣诞节假期,开始编写Python语言的编译器。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了 :类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

最初的Python完全由Guido本人开发。但随后Python得到Guido同事的欢迎。他们迅速的反馈使用意见,并参与到了Python的改进。

后来,Python拓展到研究所之外。Python将许多机器层面上的细节隐藏,交给编译器处理,并凸显出逻辑层面的编程思考。Python程序员可以花更多的时间用于思考程序的逻辑,而不是具体的实现细节。这一特征吸引了广大的程序员,Python开始流行。

1991年,Linus在comp.os.minix新闻组上发布了Linux内核源代码,吸引大批hacker的加入。Linux和GNU相互合作,最终构成了一个充满活力的开源平台。 硬件性能不是瓶颈,Python又容易使用,所以许多人开始转向Python。

Python发展至今,无论是从入门级选手(爬虫、前端、后端、自动化运维)到专业级数据挖掘、科学计算、图像处理、人工智能,Python 都可以胜任。

曾老师评论:

Python 的流行,离不开Guido的热情和计算机世界发展的「大势」。上面的故事可以看出, Guide 首先是个「数学和计算机双料硕士」,其次他喜欢「工程」,这两个条件对于 Python 的诞生都「缺一不可」。

1991 年之后,计算机硬件的逐渐普及(在中国,还要等到1995年之后,从 DOS 到 Win95 的转换,曾老师是在 1995 年第一次接触计算机的)让「更容易学习」的 Python 走上了历史舞台。

1991年又正好发布了 Linux 内核源码,Python 在 Linux 上基本上处于「基础设施」的地位,许多 Linux 的管理工具都是使用 Python 开发的。

到了 2018年,大数据、AI 的发展,更多非专业人员需要使用一门入门容易的编程语言,这 Python 的发展走上了快车道。继而出圈。

可见,一个事物的发展,和(1)自身的特点,(2)持续的努力,(3)主流趋势密不可分,且缺一不可。对于我来来说,(3)不可掌控,(1)不可快速构建,能掌控的只有(2):持续的努力。

所以,2021 努力吧,少年!

Python 安装包下载(2021-01-03)

各位Python同学上午好啊!今天开始我们来学点实际的 Python 技能吧。就从最难的「安装 Python 环境」讲起。

为啥说这个「最难」呢?因为 90% 的编程语言自学者可能都是从这里放弃的。

如果你看过 《21天精通 C++》或者《七天学会网站制作》这类书籍,你就可能知道,21 天你或许还没有搞清楚 C++编译器是什么,7 天你甚至都没有弄清楚 HTML 和 Dreamweaver 的关系。

这并不是因为这些技能很难,而是因为他们很杂,需要有大量的「前置」经验。例如知道怎么阅读计算机给你展示的报错信息,知道如何正确使用搜索引擎来查找资料,知道在碰到模棱两可或者前后矛盾的信息时应该如何选择。

当然,曾老师的课程中不会讲太多「前置」经验,因为能进入曾老师的 Python 课的同学都是「超出平均水平的」。从今天开始,我会讲讲如何从头配置本机 Python 开发环境。

曾老师假设你有一台电脑(废话),安装了 Windows 10 操作系统。当然,如果你使用 macOS 的话可能会更简单一点。

首先,访问 Python 的官方网站: https://www.python.org,目前最新的 Python 版本是 3.9.1 ,点击 「Downloads -> Windows」下载。

Python 官网主页

Python.org 官方网站访问比较慢,也可能连接不上,我建议你通过「科学上网」来下载。

你也可以直接访问 Python3.9.1 的下载地址:https://www.python.org/downloads/release/python-391/

Python 选择下载的版本

大部分使用 Windows 系统的同学选择 Windows installer (64-bit)下载即可。

macOS 的同学建议选择 macOS 64-bit intel installer。如果你的 Mac 使用最新的 苹果 M1 处理器,那么需要选择 macOS 64-bit universal2 installer 。

Python 在线编辑器(2021-01-04)

各位Python同学,2021 第一天上班好啊!

昨天我们讲了 Python 安装包的下载。至于安装过程我就不讲了,相信各位都有能力搞定。说实在的,如果你没有能力做完安装这步的话,我建议你也不要学 Python 了,至少这节课你是跟不下去了。

今天聊一些 Python 的在线 IDE。使用在线 IDE,你可以不必安装本地环境,打开网页就能进行 Python 代码的编写和测试。

什么是 IDE

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。

本地搭建 IDE 会消耗一些时间,再加上在线教育的普及,很多网站提供了「在线 IDE」。经过昨天晚上的测试,我提供一些可以使用的在线 IDE 给大家,大家可以直接访问下面的网站进行 Python 代码测试。

w3cschool

repl.it

coding.net

  • 访问地址: https://coding.net
  • Python 环境: Python 3.6
  • 是否需要科学上网: 否
  • 特点:提供虚拟机环境,提供 VSCode 编程环境,但运行速度较慢

colab

  • 访问地址: https://colab.research.google.com/
  • Python 环境: Python 3.9
  • 是否需要科学上网: 是
  • 特点:类 Jupyter 环境,无敌强大,可调用 GPU

各位Python同学大家晚上好哇!今天的Python小知识又来啦。

昨天我们聊一些 Python 的在线 IDE,不知道大家有没有尝试呢?从今天开始,我们讲的内容就基于大家已经搭建起了自己的本地 Python 环境这个前提啦。(请参考昨天和前天的 Python 小知识)

什么?你没有本地 Python 环境?那就去装一个吧。我知道你能搞定的。

再次推荐一下,在本地环境还没有搭建好的时候,你可以用下面这两个环境来做 Python 的测试:

今天讲讲 print 的使用。

初学者一般会使用 print 函数来输出信息和调试程序。print 的语法是 print('Hello world')

被输出的信息包含在英文括号内,使用单引号或者双引号包裹即可。

请切换到英文输入法!所有标点符号必须使用英文输入

如果你在本机环境中,首先输入 python3 进入 python 交互环境,按下图展示输入代码,然后按下回车键即可输出信息。

在本机环境中使用 print

如果你使用在线编辑器(以w3cschool 为例),按下图操作输入代码,单击「运行代码」按钮即可查看输出。

在 w3cschool 在线环境中使用 print

今天的内容就到这里啦!请注意,曾老师的 python 课第一课 PPT、视频已经全面上线。请扫描加入课程交流群。

请进群索取课程 PPT 以及视频播放地址

全文完