1、Python基础知识
python简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
Python 发展历史
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。
Python 特点
1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:Python代码定义的更清晰。
3.易于维护:Python的成功在于它的源代码是相当容易维护的。
4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:Python提供所有主要的商业数据库的接口。
9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
Python 版本区别
2020 年 1 月 1 日,Python 官方终止了对 Python 2.7 版本(最后一个 Python 2.x 版本) 的支持,这意味着开发者不会在接收到任何来自 Python 2.7 的错误修复或安全更新。自此 Python 2 完全退休,Python 3 时代正式来临。
尽管 Python 2 已退出历史舞台 ,但国内外一些互联网公司仍在使用 Python 2.7 开发程序,同时为了让大家更好地了解 Python 3 ,我们非常有必要知道这两个版本间存在区别。
你也许会问,为什么终止支持了,还会有公司再使用?其实,版本的更换是一项庞大、复杂的工作,一些小型的互联网公司在人力、财力不足的情况下,只能要继续使用低版本的 Python,只有万不得已时才会更新版本。
和 Python 2.x 版本相比,Python 3.x 版本在语句输出、编码、运算和异常等方面做出了一些调整,本节就对这些调整逐一地做简单介绍。
注意:本节适合有 Python 基础的学员阅读,初学者可先跳过本节,建议整体学完 Python 后,再回过头来阅读本文。
Python 3.x print()函数代替了print语句
在 Python 2.x 中,输出数据使用的是 print 语句:
>>> print "3,4"
3,4
或者
>>> print(3,4)
(3,4)
但是在 Python 3.x 中,print 语句没有了,取而代之的是 print() 函数,例如:
>>> print(3,4)
3 4
如果还像 Python 2.x 中那样使用 print 语句,Python 编译器就会报错,例如:
>>> print "3,4"
File "<stdin>", line 1
print "3,4"
^
SyntaxError: Missing parentheses in call to 'print'
Python 3.x 默认使用 UTF-8 编码
Python 2.x 默认采用的 ASCII 编码,而 Python 3.x 默认使用 UTF-8 编码,相比来说,UTF-8 编码可以很好地支持中文或其它非英文字符。
例如,输出一句中文,使用 Python 2.x 和 Python 3.x 的区别如下:
#Python 2.x
>>>str ="C语言中文网"
>>>str
'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'
#Python 3.x
>>>str ="C语言中文网"
>>>str
'C语言中文网'
不仅如此,在 Python 3.x 中,下面的代码也是合法的:
>>>中国="China"
>>>print(中国)
China
Python 3.x 除法运算
和其他语言相比,Python 的除法运算要高端很多,它的除法运算包含 2 个运算符,分别是 / 和 //,这 2 个运算符在 Python 2.x 和 Python 3.x 的使用方法如下:
/ 运算符
在 Python 2.x 中,使用运算符 / 进行除法运算的方式和 Java、C 语言类似,整数相除的结果仍是一个整数,浮点数除法会保留小数点部分,例如:
>>>1/2
0
>>>1.0/2
0.5
但是在 Python 3.x 中使用 / 运算符,整数之间做除法运算,结果也会是浮点数。例如:
>>>1/2
0.5
运算符 //
使用运算符 // 进行的除法运算叫做 floor 除法(“地板除”),也就是输出不大于结果值的一个最大的整数(向下取整)。此运算符的用法在 Python 2.x 和Python 3.x 中是一样的,举个例子:
#Python 2.x
>>> -1//2
-1
#Python 3.x
>>> -1//2
-1
Python 3.x 异常
在 Python 3.x 版本中,异常处理改变的地方主要在以下几个方面:
在 Python 2.x 版本中,所有类型的对象都是直接被抛出的,但是在 Python 3.x 版本中,只有继承 BaseException 的对象才可以被抛出。
在 Python 2.x 版本中,捕获异常的语法是“except Exception,var:”;但在 Python 3.x 版本中,引入了 as 关键字,捕获异常的语法变更为 “except Exception as var:”。
在 Python 3.x 版本中,处理异常用 “raise Exception(args)”代替了“raise Exception,args”。
Python 3.x 版本中,取消了异常类的序列行为和 .message 属性。
有关 Python 2.x 版本和 Python 3.x 版本处理异常的示例代码如下所示:
#Python 2.x
>>> try:
... raise TypeError,"类型错误"
... except TypeError,err:
... print err.message
...
类型错误
#Python 3.x
>>> try:
... raise TypeError("类型错误")
... except TypeError as err:
... print(err)
...
类型错误
Python 3.x 八进制字面量表示
在 Python 3.x 中,表示八进制字面量的方式只有一种,并且必须写成“0o1000”这样的方式,原来“01000”的方式不能使用了。举个例子:
#Python 2.x
>>> 0o1000
512
>>> 01000
512
#Python 3.x
>>> 01000
File "<stdin>", line 1
01000
^
SyntaxError: invalid token
>>> 0o1000
512
Python 3.x 不等于运算符
Python 2.x 中的不等于运算符有 2 种写法,分别为 != 和 <>,但在 Python 3.x 中去掉了 <>,只有 != 这一种写法,例如:
#Python 2.x
>>> 1!=2
True
>>> 1<>2
True
#Python 3.x
>>> 1!=2
True
>>> 1<>2
File "<stdin>", line 1
1<>2
^
SyntaxError: invalid syntax
Python 3.x 输入差异
Python 2.x 中提供两种类型输入函数,分别是 input() 和 raw_input(),前者默认返回的 int(整数类型) 类型,而后者总是返回 str(字符串类型);Python 3.x 中只提供了一个输入函数 input(),该函数的使用方法与 raw_input() 相似,总是返回 str 类型。示例如下:
Python 2.x a=input("请输出:") 请输出:123 >>> type(a) <type 'int'> b=input("请输入") 请输出:"C语言中文网" >>> type(b) <type 'str'> c=raw_input("请输入:") 请输入:123 >>>type(c) <type 'str'> # Python3.x >>> d=input("请输入:") 请输入:123 >>> d '123' >>> type(d) <class 'str'>
Python 3.x 数据类型
Python 3.x 中对数据类型也做了改动,比如说:
Python 3.x 去除了 long 类型,现在只有一种整形 int,但它的行为就像是 Python 2.x 版本中的 long。
Python 3.x 新增了 bytes 类型,对应 Python 2.x 版本的八位串,定义 bytes 字面量的方法如下所示:>>>b=b'China'
>>>type(b)
<type 'bytes'>字符串对象和 bytes 对象可以使用 .encode() 或者 .decode()方法相互转化,例如:>>>s=b.decode()
>>>s
'China'
>>>b1=s.encode()
>>>b1
b'China'Python 3.x 中,字典的 keys()、items() 和 values() 方法用返回迭代器,且之前的 iterkeys() 等函数都被废弃,同时去掉的还有 dict.has_key(),改为用 in 替代。