问道python之基础篇【一】
认识python
1.python的简介
1.1.什么是python?
Python是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
Python语法简洁清晰,特色之一是强制用空白符作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够用其他语言制作的各种模块(尤其是C++)很轻松地联结在一起。
1.2.python的特点
简单,易学,免费、开源,高层语言,移植性,解释性,面向对象,可扩展性,可嵌入性,丰富的库。
Python的设计哲学:简单、优雅、明确
Python的两个主要优点:(1)胶水语言 (2)可维护性
1.3.python的应用
1.3.1.系统编程
Python对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件(有时也被称为shell工具)的理想工具。Python程序可以搜索文件和目录树,可以运行其他程序,用进程或线程进行并行处理等等。
Python的标准库绑定了POSIX以及其他常规操作系统(OS)工具:环境变量、文件、套接字、管道、进程、多线程、正则表达式模式匹配、命令行参数、标准流接口、shell命令启动器、文件名扩展等。此外,很多python的系统工具设计时都考虑了其可移植性。例如,复制目录树的脚本无需做任何修改就可以在几乎所有的python平台上运行。
1.3.2.用户图形接口
Python的简洁以及快速的开发周期十分适合开发GUI程序。Python内置了TKinter的标准面向对象接口TK GUI API,使python程序可以生成可移植的本地观感的GUI。Python/TKinter GUI不做任何改变就可以运行在微软windows、X windows(UNIX和Linux)一级Mac OS(Classic和OS X都支持)等平台上。一个免费的扩展包PMW,为TKinter工具包增加了一些高级部件。此外,基于C++平台的工具包wxpython GUI AP 可以使用python构建可移植的GUI。
1.3.3.Internet脚本
Python提供了标准Internet模块,使python能够广泛地在多种网络任务中发挥作用,无论是在服务器端还是在客户端都是如此。脚本可以通过套接字进行通信;从发给服务器端的CGI脚本的表单中解析信息;通过URL获取网页;从获取的网页中解析HTML和XML文件;通过XML-RPC、SOAP和Telnet通信等。Python的库使这一切变得相当简单。
不仅如此,从网络上还可以获得很多使用python进行Internet编程的第三方工具。例如,HTMLGen可以从python类的描述中生成HTML文件,mod_python包可以使在apaache服务上运行的python程序更具效率并支持Python Server Page这样的服务器模版,而且支持客户端运行的服务器端Applet。此外,python涌现了许多web开发工具包,例如,Django
、TurboGears、flask等,使pythn能够快速构建功能完善和高质量的网站。
1.3.4.组件集成
Python可以通过C/C++系统进行扩展,并能够嵌套C/C++系统的特性,使其能够作为一种灵活的粘合语言,脚本化处理其他系统和组件的行为。
1.3.5.数据库编程
对于传统的数据库需求,python提供了对所有主流关系数据库系统的接口,例如:Sybase、Oracle、informix、ODBC、MySql、PostgreSQL、SQLite。
Python标准的pick模块提供了一个简单的对象持久化系统:他能够让程序轻松地将整个python对象保存和恢复至文件和文件类的对象中。在网络上,同样可以找到名叫ZODB的第三方系统,它为python脚本提供了完整的面向对象数据库系统,系统SQLObject可以将关系数据库映射至python的类模块。并且,从python2.5版本开始,SQLite已经成为python自带标准库的一部分了。
1.3.6.快速原型
1.3.7.数值计算和科学计算编程。
1.3.8.游戏、图像、人工智能、XML、机器人等
1.3.9.云计算平台(运维系统)
OpenStack是IaaS(基础设施即服务)组件,让任何人都可以自行建立和提供云端运算服务,全部采用python开发。
1.4.python2.X和3.X的区别
1.4.1.__future__模块
Python3.x引入了一些与python2不兼容的关键字和特性。在python2中,可以通过内置的__future__模块导入这些新内容。如果你希望在python2环境下写的代码也可以在python3.x中运行,那么建议使用__future__模块。例如,如果希望在python2中拥有python3.x的整数除法行为,可以通过下面的语句导入相应的模块
下表列出了__future__中其他可导入的特性:
例如:
1.4.2.print函数
虽然print语法是python3中一个很小的改动,且应该已经广为人知,但依然值得提一下:python2中的print语句被python3中的print()函数取代,这意味着在python3中必须用括号将需要输出的对相关括起来。
在python2中使用额外的括号也是可以的。但反过来在python3中想以python2的形式不带括号调用print函数时,会触发SyntaxError
Python 2
Python3
1.4.3.整数除法
由于人们常常会忽视python3在整数除法上的改动(写错了也不会触发SyntaxError),所以在移植代码或在python2中执行python3的代码时,需要特别注意这个改动。
所以,我还是会在python3的脚本中尝试用float(3)/2或3/2.0代替3/2。以此来避免代码在python2环境下可能导致的错误(或与之相反,在python2脚本中用from __future__ import division来使用python3的除法)
Python 2
Python 3
1.4.4.Unicode
Python2有基于ASCII的str()类型,其可通过单独的unicode()函数转成unicode类型,但没有byte类型。
而在python 3中,终于有了Unicode(utf-8)字符串,以及两个字节类:bytes和bytearrays。
再也不用为编码问题而烦恼了。
1.4.5.xrange
在python2.x中,经常会用xrange()创建一个可迭代对象,通常会出现在“or 循环”或“列表/集合/字典推导式”中
这种行为与生成器非常相似(如“惰性求值”),但这里的xrange-iterable无尽的,意味着可能在这个xrange上无限迭代。
由于xrange的“惰性求知”特性,如果只需迭代一次(如for循环中),range()通常比xrange()快一些。不过不建议在多次迭代中使用range(),因为range()每次都会在内存中重新生成一个列表。
在python3中,range()的实现方式与xrange()函数相同,所以就不存在专用的xrange()(在python 3中使用xrange()会触发NameError)。
Python 2
Python 3
1.4.6.range对象中的__contains__方法
在python3.X中,range有了一个新的__contains__方法。__contains__方法可以有效的加快python3.X中整数和布尔型的“查找”速度
1.4.7.触发异常
Python 2支持新旧两种异常触发语法,而python 3 只接受带括号的语法(不然会触发SyntaxError):
1.4.8.异常处理
Python在3中的异常处理也发生了一点变化。在python 3中必须使用“as”关键字
1.4.9.next()函数和.next()方法
在python 2.7.5中,函数形式和方法形式都可以使用,而在python 3中,只能使用next()函数(试图调用.next()方法会触发AttributeError)
1.4.10.for循环变量与全局命名空间泄露
在python 3.x中,for循环中的变量不会再泄露到全局命名空间中了!
Python3、0的官网中是这样描述的:
“列表推导不再支持[... for var in item1, item2, ...]这样的语法,使用[... for var in (item1, item2, ...)]代替。还要注意列表推导有不同的语义:现在列表推导更接近list()构造器中的生成器表达式这样的语法糖,特别要注意的是,循环控制变量不会再泄漏到循环周围的空间中了。
1.4.11.通过input()解析用户的输入
Python 3中,input()函数总是将用户的输入存储为str对象。在python 2中,为了避免读取非字符串类型会发生的一些危险行为,不得不使用raw_input()代替input()
Python 2
Python 3
1.4.11.返回可迭代对象,而不是列表
在xrange那一节中可以看到,某些函数和方法在python中返回的是可迭代对象,而不像在pythn2中返回列表。
由于通常对这些对象只遍历一次,所以这种方式会节省很多内存。然而,如果通过生成器来多次迭代这些对象,效率就不高了。
此时我们的确需要列表对象,可以通过list()函数简单的将可迭代对象转化为列表。
1.5.python的安装
安装Python
windows:
1 2 3 4 5 6 7 |
1、下载安装包 https://www.python.org/downloads/ 2、安装 默认安装路径:C:\python27 3、配置环境变量 【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】 如:原来的值;C:\python27,切记前面有分号 |
linux:
1 2 3 |
无需安装,原装Python环境 ps:如果自带2.6,请更新至2.7 |
更新Python
windows:
1 |
卸载重装即可 |
linux:
Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
查看默认Python版本 python -V 1、安装gcc,用于编译Python源码 yum install gcc 2、下载源码包,https://www.python.org/ftp/python/ 3、解压并进入源码文件 4、编译安装 ./configure make all make install 5、查看版本 /usr/local/bin/python2.7 -V 6、修改默认Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python2.7 /usr/bin/python 7、防止yum执行异常,修改yum使用的Python版本 vi /usr/bin/yum 将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6 |