Python是一种动态的解释型语言,应用场景广泛。它具有以下特性:
- 简明、易读的语法
- 丰富的标准库。通过第三方的软件模块,我们可以方便地添加数据类型、函数和对象
- 上手简单,开发和调试速度快。Python代码的开发速度可能比C/C++快10倍
- 基于Exception的错误处理机制
- 强大的自省功能
- 丰富的文档和活跃的社区
Python也可以作为一种胶水语言。通过Python,擅长不同编程语言的程序员可以在同一个项目中合作。例如开发一个数据型的应用时,C/C程序员可以从底层实现高效的数值计算算法,而数据科学家可以通过Python调用这些算法,而不用花时间去学习底层的编程语言,C/C程序员也不需要去理解科学数据层面的东西。
你可以从这里查看更多相关内容: https://www.python.org/doc/essays/omg-darpa-mcc-position/
1. 准备工作
Python可以从这里下载:https://www.python.org/downloads/
虽然用NotePad或TextEdit就可以写Python代码,但是如果用集成开发环境(Integrated Development Environment, IDE)的话,编辑和调试会更方便。
目前已经有很多专门为Python设计的IDE,包括IDEL( https://docs.python.org/3/library/idle.html ),PyCharm( https://www.jetbrains.com/pycharm/ ),Sublime Textd(https://www.sublimetext.com/)等。
2. 如何做…
下面来通过一些简短的代码熟悉一下Python。 >>>
符号是Python解释器的提示符。
- 整数类型的操作:
鉴于这是我们第一次展示代码,下面贴一下代码在Python解释器中的样子:>>> # This is a comment >>> width = 20 >>> height = 5*9 >>> width * height 900
下面来看一下其他的例子:
- 复数(译者注:这里原书
abs(a) = 5
,应该是错了):>>> a=1.5+0.5j >>> a.real 1.5 >>> a.imag 0.5 >>> abs(a) # sqrt(a.real**2 + a.imag**2) 1.5811388300841898
- 字符串操作:
>>> word = 'Help' + 'A' >>> word 'HelpA' >>> word[4] 'A' >>> word[0:2] 'He' >>> word[-1] # 最后一个字符 'A'
- 列表(list)操作:
>>> a = ['spam', 'eggs', 100, 1234] >>> a[0] 'spam' >>> a[3] 1234 >>> a[-2] 100 >>> a[1:-1] ['eggs', 100] >>> len(a) 4
<span class="pre">while</span>
循环:# Fibonacci series: >>> while b < 10: ... print b ... a, b = b, a+b ... 1 1 2 3 5 8
<span class="pre">if</span>
命令: 首先我们用<span class="pre">input()</span>
从键盘读入一个整数:
然后在输入的数字中使用>>>x = int(input("Please enter an integer here: ")) Please enter an integer here:
<span class="pre">if</span>
进行判断:>>>if x < 0: ... print ('the number is negative') ...elif x == 0: ... print ('the number is zero') ...elif x == 1: ... print ('the number is one') ...else: ... print ('More') ...
<span class="pre">for</span>
循环::>>> # Measure some strings: ... a = ['cat', 'window', 'defenestrate'] >>> for x in a: ... print (x, len(x)) ... cat 3 window 6 defenestrate 12
- 定义函数:
>>> def fib(n): # 生成n以内的菲波那切数列 ... """Print a Fibonacci series up to n.""" ... a, b = 0, 1 ... while b < n: ... print(b), ... a, b = b, a+b >>> # Now call the function we just defined: ... fib(2000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
- 导入模块:
>>> import math >>> math.sin(1) 0.8414709848078965 >>> from math import * >>> log(1) 0.0
- 定义类:
>>> class Complex: ... def __init__(self, realpart, imagpart): ... self.r = realpart ... self.i = imagpart ... >>> x = Complex(3.0, -4.5) >>> x.r, x.i (3.0, -4.5)
下一节:作为一种解释型的语言,Python的速度并不算慢。如果对速度有很高的要求的话,可以选择用更快的语言实现,比如C或C++,然后用Python调用。Python的一种常见应用场景是实现高级的逻辑。Python的解释器就是用C语言写的,即CPython。解释器将Python转换成一种中间语言,叫做Python字节码,类似于汇编语言,但是包含一些更高级的指令。当一个运行一个Python程序的时候,评估循环不断将Python字节码转换成机器码。解释型语言的好处是方便编程和调试,但是程序的运行速度慢。其中的一种解决办法是,用C语言实现一些第三方的库,然后在Python中使用。另一种方法是使用即时编译器来替换Cpython,例如PyPy,PyPy对代码生成和Python的运行速度做了优化。但是在本书中,我们将研究第三种方法。Python提供了很多可以利用并行的模块,在后面的章节中,我们将着重讨论这些并行编程的模块。
接下来,本章将介绍两种基本概念:线程和进程,以及它们在Python中的表现。