目录
—
笔记点到为止。欲知详情,请善用搜索引擎。—— 强烈建议国内IT从业人员使用 必应 (Bing) 。
什么是Python?
Python 是一门简单易学、跨平台、可移植、可扩展、交互式、解释型、面向对象的动态语言。
谁发明了Python?
Guido von Rossum,荷兰人,又被称为GVR、龟叔。1982年获得阿姆斯特丹大学(University of Amsterdam)数学和计算机硕士学位。
GVR又被称作BDFL(Benevolent Dictator for Life, 仁慈的独裁者)。 参考: 《经常用来指代python之父Guido的BDFL是什么意思?》
为什么要发明Python?
Guido希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程。
为什么叫Python?
Python的中文含义是蟒蛇,并且Python的Logo也是两条缠绕在一起的蟒蛇的样子,然而这个名字只是因为Guido非常喜爱英国六人喜剧团体 Monty Python 的电视剧《Monty Python’s Flying Circus》 (BBC1960-1970年代播放的室内情景幽默剧,以当时的英国生活为素材)。 Σ(°△°|||)
Python什么时候诞生的?
Python第一个公开发行版发行于1991年。(到2022年已经31年了!)
Python解释器是用什么写的?
Python的原版(官方)解释器CPython是用C语言写的。Python代码也可以调用C语言编译得到的动态库。
另外,现在也还有其他的解释器:
- Jython(可以运行在Java平台)
- IronPython(可以运行在.NET和Mono平台)
- PyPy(Python实现的Python解释器,但是比CPython快。——这就是另一个故事了)
什么是The Zen of Python?
在Python解释器中执行 import this,就可以得到以下内容:
>>> import this
The Zen of Python, by Tim Peters
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 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
Python有什么优点?
- 简单易学、明确优雅、开发速度快
- “内置电池”,拥有一个强大的标准库
- 社区活跃,共享大量第三方模块
- 代码开源,以便任何人都可以持续改善。(基于GPL兼容协议)
- 其他语言解决一个问题有多种解决路径,但是python往往路径简单,尽量避免解决方法过多。
- 现在还可以再加上一点:满满的中文文档
Python有什么缺点?
- 运行速度慢
这也是解释性语言的通病,但如果当性能真的成为问题,你可以用C语言重写你程序中的耗时模块,也可以考虑使用PyPy。 - 源码开放
如果你是靠卖软件挣钱,不想对客户公开你的源码,那么请不要使用Python。
为什么说“人生苦短,我用Python”?
原话出自Bruce Eckel (ANSI C++标准委员会的创始成员,《Thinking in C++》与《Thinking in Java》的作者)。
“Life is short (You need Python)”
还有 Bruce Eckel 以下这段话:
I feel Python was designed for the person who is actually doing the programming, to maximize their productivity. […] When you have the experience of really being able to be as productive as possible, then you start to get pissed off at other languages. You think, “Gee, I’ve been wasting my time with these other languages.”
我觉得Python是为实际做编程的人设计的,以最大限度地提高他们的生产力。[…]当你有真正能够尽可能提高工作效率的经验时,你就会开始对其他语言感到生气。你会想,“哎呀,我一直在浪费时间用这些其他语言。
以上来自:https://sebsauvage.net/python/
以及,后来有了龟叔穿T恤的照片:
知乎网友在这里也提到:
长期使用过C和Java语言的程序员,在转向Python之后就会发现。采用Python进行机器学习方向的研发确实存在很多方便,主要体现在以下几个方面:
- 代码量下降明显。
- 开发方便。
- 语言生态健全。
Python的应用方向?
- 常规软件开发
- 科学计算
- 自动化运维
- 云计算
- WEB开发
- 网络爬虫
- 数据分析
- 人工智能