Python系列之 - 初识Python

       Python作为一门解释性的、交互式面向对象编程语言,不仅简单易学、移植性好,而且拥有强大的丰富的库的支持。其实早在2010年的时候我就知道了这门语言,但是一直没有正式的去了解这门语言,最近才开始认真的去熟悉她,而且我也越来越爱上了这门语言。于是打算将这个学习过程记录下来,现在就先来认识一下python吧

python 之父

                                                                                           Python系列之 - 初识Python_第1张图片

       Guido van Rossum(吉多•范罗苏姆),一位拥有数学和计算机的双硕士学位的荷兰大师创造了Python语言。早在1983年,他在CWI的一个小组中进行开发工作,那时候他们是希望设计实现一门叫ABC的语言,这种语言是为非计算机程序员或软件开发者的计算机用户而设计的,但由于种种原因这种语言没有获得成功。到了1989年的圣诞节,当时的一部电视剧Monty Python's Flying Circus停播。Guido打算找点其他的事情打发自己的圣诞假期。当时,Guido家里只有一台Mac电脑,他决定用这台电脑编写一个新的脚本语言,一门能够吸引Unix平台上默默工作的C程序员的语言,他将做为ABC语言的一种继承,继承ABC语言的所有优点,当然,Guido还想在Python中避免这一错误的同时实现一些在ABC中闪现过但未曾实现的东西。就这样,Guido在圣诞假期内,慢慢悠悠的实现自己的编译器,并在之后的日子里不断丰富自己设想中完美语言的种种特性。

python 版本

       python发展到现在已经差不多快30岁了, 目前包括两个大的版本,2.x 和 3.x ,其中2.x的最新版本为2.7.11, 3.x的版本为3.5.1
早在2008年的时候,python就推出了3.0的版本,而当时2.x的版本还在2.5的版本,3.0版本更新并优化了很多东西,但是这个3.0的版本不能向后兼容,导致很多用户使用2.x编写的应用无法使用移植到新的环境,因此2.x的版本并没有完全停止,到了后来的2.6的版本就可以能够部分兼容2.x的版本,又能兼容3.0的版本。根据官方的说明,2.7成为python2.x的最后一个版本,且到了2020年将不再提供支持。建议所有的用户更新到3.4及以上版本。 
早在2008年的时候,python就推出了3.0的版本,而当时2.x的版本还在2.5的版本,3.0版本更新并优化了很多东西,但是这个3.0的版本不能向后兼容,导致很多用户使用2.x编写的应用无法使用移植到新的环境,因此2.x的版本并没有完全停止,到了后来的2.6的版本就可以能够部分兼容2.x的版本,又能兼容3.0的版本。根据官方的说明,2.7成为python2.x的最后一个版本,且到了2020年将不再提供支持。建议所有的用户更新到3.4及以上版本。 

python 2.x到3.x的一些变化
 一 print() 函数
1、输出格式变化

2.6以后的版本既可以使用括号也可以不使用括号,但在3.x中使用print必须使用括号.以下代码2.x采用2.7版本,

python 2.x中

>>> print('Print function in 2.7')  
Print function in 2.7  
>>> print 'Print function in 2.7'  
Print function in 2.7  
>>> print "Print function in 2.7"  
Print function in 2.7

python 3.x中

>>> print 'Print function in 3.4'  
SyntaxError: Missing parentheses in call to 'print'  
>>> print('Print function in 3.4')  
Print function in 3.4

2、对输出列表的变化,3.x输出列表必须带括号

python 2.x中

>>> print('x','y')  
('x', 'y')

python3.x

>>> print('x','y')  
x y  
>>> print(('x','y'))  
('x', 'y')

3、使用逗号结尾禁止换行改为空格

python2.x

>>> print 1,;print 2  
1 2 

python3.x

>>> print(1,end="");print(2)  
12  

二 编码
Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:

>>> 中国  = 'china'  
>>> print(中国)  
china  

在3.x中开发时可以不用再申明-*- coding:utf-8 -*-了

三 除法在3.x中终于能显示小数啦,当然同样支持老版本的整除

01.>>> 1/2  
02.0.5  
03.>>> 1//2  
04.0  

四 去掉了raw_input

3.x中再不支持raw_input的写法了,所有输入均使用Input,这样接收的所有输入均为字符串类型,如需要使用整型,必须使用int转换
五 不等于操作符不在使用<>,只能用 != 表示

六 比较运算对类型进行严格控制

在3.x中如果两个变量比较时,类型不一样将报类型错误,不会像2.x中的一样报错bool类型
python3.x

>>> a = 1  
>>> b = 'x'  
>>> a < b  
Traceback (most recent call last):  
 File "", line 1, in   
 a < b  
TypeError: unorderable types: int() < str()  

python2.x

>>> a < b  
True  
>>> a > b  
False  
 
  

七 异常exception取消, 改为as

try....exception Exception,e  改为 try...exception Exception as e

八 range取消自动列表化,

python3.x

>>> range(10)  
range(0, 10)  
>>> list(range(10))  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

python2.x

>>> range(10)  
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  

但是在使用for循环进行迭代是还是一样的 for x in range(10)

以上仅仅列举了部分新变化,具体更多新特性可以官方文档:https://docs.python.org/3.0/whatsnew/3.0.html


 python程序运行过程

   python代码编写完成后生成的文件后缀名为.py,但当你运行.py的程序文件时,你会发现在.py文件所在的目录下会生成一个相同文件名的.pyc的文件。可能会有疑问了,这个.pyc文件到底是个神马东东。这里就要说一下python的运行过程,python是用C写的,那么.py的程序到底怎么被机器识别呢? python的程序在运行是会生成字节码文件,也就是刚才所说的.pyc的文件,编译是有python解释器来完成的,只是一个简单的翻译步骤,编译完成后的文件将交给python的"虚拟机“来运行。

 python的这样保存字节码是作为一种启动速度的优化,下次运行时如果你在上次保存字节码之后没有修改源码文件(.py文件)的话,python会直接加载.pyc文件并跳过编译这一个步骤,当python必须重新编译时,会自动检查源文件和字节码文件的时间戳,如果重新保存了源代码,下次运行时还需要在编译源码文件到字节码文件。

但是python的字节码文件.pyc并不是机器的二进制代码,是特定于python的一种表现形式,所以python的执行速度相比较与C、c++是要慢些的。

你可能感兴趣的:(Python成长之路)