mirror of
https://github.com/apachecn/ailearning.git
synced 2026-02-09 13:25:39 +08:00
148 lines
4.5 KiB
Markdown
148 lines
4.5 KiB
Markdown
# Python 简介
|
||
|
||
## **Python** 历史
|
||
|
||
`Python` 的创始人为荷兰人吉多·范罗苏姆(`Guido van Rossum`)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为 ABC 语言的一种继承。之所以选中 `Python` 作为程序的名字,是因为他是 BBC 电视剧——蒙提·派森的飞行马戏团(`Monty Python's Flying Circus`)的爱好者。
|
||
|
||
1991年,第一个 Python 编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。
|
||
|
||
`Python 2.0` 于 2000 年 10 月 16 日发布,增加了实现完整的垃圾回收,并且支持 `Unicode`。
|
||
|
||
`Python 3.0` 于 2008 年 12 月 3 日发布,此版不完全兼容之前的 `Python` 源代码。不过,很多新特性后来也被移植到旧的 `Python 2.6/2.7` 版本。
|
||
|
||
## 第一行Python代码
|
||
|
||
安装好 `Python` 之后,在命令行下输入:
|
||
|
||
```py
|
||
python
|
||
```
|
||
|
||
就可以进入 `Python` 解释器的页面。
|
||
|
||
按照惯例,第一行代码应该是输出 `"hello world!"`:
|
||
|
||
In [1]:
|
||
|
||
```py
|
||
print "hello world!"
|
||
|
||
```
|
||
|
||
```py
|
||
hello world!
|
||
|
||
```
|
||
|
||
相对与 `Java,C` 等语言,`Python` 仅仅使用一行语句就完成的了这个任务。
|
||
|
||
可以将这句话的内容保存到一个文本文件中,并使用后缀名 `.py` 结尾,例如 `hello_world.py`,在命令行下运行这个程序:
|
||
|
||
```py
|
||
python hello_world.py
|
||
```
|
||
|
||
也会输出 `"hello world!"` 的结果。
|
||
|
||
## Python 之禅
|
||
|
||
在 **Python** 解释器下输入
|
||
|
||
`import this`
|
||
|
||
会出来这样一首小诗:
|
||
|
||
In [2]:
|
||
|
||
```py
|
||
import this
|
||
|
||
```
|
||
|
||
```py
|
||
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**是一种追求优雅,明确,简单的编程语言,但事实上,产生这首诗的代码并没有写的那么简单易懂:
|
||
|
||
In [3]:
|
||
|
||
```py
|
||
s = """Gur Mra bs Clguba, ol Gvz Crgref
|
||
|
||
Ornhgvshy vf orggre guna htyl.
|
||
Rkcyvpvg vf orggre guna vzcyvpvg.
|
||
Fvzcyr vf orggre guna pbzcyrk.
|
||
Pbzcyrk vf orggre guna pbzcyvpngrq.
|
||
Syng vf orggre guna arfgrq.
|
||
Fcnefr vf orggre guna qrafr.
|
||
Ernqnovyvgl pbhagf.
|
||
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
|
||
Nygubhtu cenpgvpnyvgl orngf chevgl.
|
||
Reebef fubhyq arire cnff fvyragyl.
|
||
Hayrff rkcyvpvgyl fvyraprq.
|
||
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
|
||
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
|
||
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
|
||
Abj vf orggre guna arire.
|
||
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
|
||
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
|
||
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
|
||
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
|
||
|
||
d = {}
|
||
for c in (65, 97):
|
||
for i in range(26):
|
||
d[chr(i+c)] = chr((i+13) % 26 + c)
|
||
|
||
print "".join([d.get(c, c) for c in s])
|
||
|
||
```
|
||
|
||
```py
|
||
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!
|
||
|
||
```
|
||
|
||
> Life is short. Use Python. |