Python3简介
Python3与Python2之间是不兼容的,并且其中的差别性比较大。其实Python是linux上最经常使用的软件之一,可是linux目前的版本大部分仍是使用Python2的,并且,在linux上依赖Python2的程序更多一些,因此 Python3 要代替 Python2 成为主流还须要几年的时间。
我建议:
php
- 若是是你在企业中,须要用到Python而学习Python的话,那就要看企业的应用Python的版本进行学习;
- 若是想要更多的成熟解决方案,最少的bug,最稳定的应用那就用Python2 ;
- 若是你是在读大学的学生,那我建议你学习Python3,等到毕业的时候或许Python已经成为了主流。
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具备很强的可读性,相比其余语言常用英文关键字,其余语言的一些标点符号,它具备比其余语言更有特点语法结构。
python
- Python 是一种解释型语言: 这意味着开发过程当中没有了编译这个环节。相似于PHP和Perl语言。
- Python 是交互式语言: 这意味着,您能够在一个 Python 提示符 >>> 后直接执行代码。
- Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
- Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持普遍的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
Python特色
- 易于学习:Python有相对较少的关键字,结构简单,和一个明肯定义的语法,学习起来更加简单。
- 易于阅读:Python代码定义的更清晰。
- 易于维护:Python的成功在于它的源代码是至关容易维护的。
- 一个普遍的标准库:Python的最大的优点之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
- 互动模式:互动模式的支持,您能够从终端输入执行代码并得到结果的语言,互动的测试和调试代码片段。
- 可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工做)到许多平台。
- 可扩展:若是你须要一段运行很快的关键代码,或者是想要编写一些不肯开放的算法,你可使用C或C++完成那部分程序,而后从你的Python程序中调用。
- 数据库:Python提供全部主要的商业数据库的接口。
- GUI编程:Python支持GUI能够建立和移植到许多系统调用。
- 可嵌入: 你能够将Python嵌入到C/C++程序,让你的程序的用户得到"脚本化"的能力。
Python3 下载
Python 官网:https://www.python.org/linux
Python3 基础语法
编码
默认状况下,Python 3 源码文件以 UTF-8 编码,全部字符串都是 unicode 字符串。程序员
标识符
- 第一个字符必须是字母表中字母或下划线 _ 。
- 标识符的其余的部分由字母、数字和下划线组成。
- 标识符对大小写敏感。
在 Python 3 中,能够用中文做为变量名,非 ASCII 标识符也是容许的了。算法
行与缩进
- python最具特点的就是使用缩进来表示代码块,不须要使用大括号 {} 。
- 缩进的空格数是可变的,可是同一个代码块的语句必须包含相同的缩进空格数。
缩进不一致,会致使运行错误:shell
IndentationError: unindent does not match any outer indentation level
import 与 from…import
- 在 python 用 import 或者 from…import 来导入相应的模块。
- 将整个模块(somemodule)导入,格式为: import somemodule
- 从某个模块中导入某个函数,格式为: from somemodule import somefunction
- 从某个模块中导入多个函数,格式为: from somemodule import firstfunc, secondfunc, thirdfunc
- 将某个模块中的所有函数导入,格式为: from somemodule import *
Python 数字运算
Python 解释器能够做为一个简单的计算器,您能够在解释器里输入一个表达式,它将输出表达式的值。
表达式的语法很直白: +, -, * 和 /, 和其它语言(如Pascal或C)里同样。
数据库
注意:在不一样的机器上浮点运算的结果可能会不同。编程
在整数除法中,除法 / 老是返回一个浮点数,若是只想获得整数的结果,丢弃可能的分数部分,可使用运算符 //。浏览器
注意:// 获得的并不必定是整数类型的数,它与分母分子的数据类型有关系。服务器
>>> 7//2 3 >>> 7.0//2 3.0 >>> 7//2.0 3.0
Python3 列表
序列是Python中最基本的数据结构。序列中的每一个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最多见的是列表和元组。
序列均可以进行的操做包括索引,切片,加,乘,检查成员。
此外,Python已经内置肯定序列的长度以及肯定最大和最小的元素的方法。
列表是最经常使用的Python数据类型,它能够做为一个方括号内的逗号分隔值出现。
列表的数据项不须要具备相同的类型
建立一个列表,只要把逗号分隔的不一样的数据项使用方括号括起来便可。以下所示:list = [1, 2, 3, 4, 5 ]
Python3 元组
Python 的元组与列表相似,不一样之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组建立很简单,只须要在括号中添加元素,并使用逗号隔开便可。
元组中只包含一个元素时,须要在元素后面添加逗号,不然括号会被看成运算符使用:
>>> tup1 = (50,) >>> type(tup1) # 加上逗号,类型为元组 <class 'tuple'>
Python3 字典
字典是另外一种可变容器模型,且可存储任意类型对象。
字典的每一个键值(key=>value)对用冒号(:)分割,每一个对之间用逗号(,)分割,整个字典包括在花括号({})中 。
键必须是惟一的,但值则没必要。
值能够取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
实例:
#!/usr/bin/python3 dict = {'Name': 'Test', 'Age': 7, 'number': 'First'} print ("dict['Alice']: ", dict['Alice'])
如上面的实例,用字典里没有的键访问数据,会输出错误以下:
Traceback (most recent call last): File "test.py", line 5, in <module> print ("dict['Alice']: ", dict['Alice']) KeyError: 'Alice'
Python3 集合
集合(set)是一个无序的不重复元素序列。
可使用大括号 { } 或者 set() 函数建立集合,注意:建立一个空集合必须用 set() 而不是 { },由于 { } 是用来建立一个空字典。
Python3 循环语句
关于无限循环,咱们能够经过设置条件表达式永远不为 false 来实现无限循环,实例以下:
#!/usr/bin/python3 var = 1 while var == 1 : # 表达式永远为 true num = int(input("请输入一个数字 :")) print ("你输入的数字是: ", num) print ("Good bye!")
执行以上脚本,输出结果以下:
输入一个数字 :5 你输入的数字是: 5 输入一个数字 :
你可使用 CTRL+C 来退出当前的无限循环。
无限循环在服务器上客户端的实时请求很是有用。
Python3 迭代器与生成器
迭代器
迭代是Python最强大的功能之一,是访问集合元素的一种方式。
迭代器是一个能够记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到全部的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
字符串,列表或元组对象均可用于建立迭代器。
>>> list=[1,2,3,4] >>> it = iter(list) # 建立迭代器对象 >>> print (next(it)) # 输出迭代器的下一个元素 1 >>> print (next(it)) 2 >>> print (next(it)) 3 >>> print (next(it)) 4
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
跟普通函数不一样的是,生成器是一个返回迭代器的函数,只能用于迭代操做,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程当中,每次遇到 yield 时函数会暂停并保存当前全部的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
Python3 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提升应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,好比print()。但你也能够本身建立函数,这被叫作用户自定义函数。
定义一个函数
你能够定义一个由本身想要功能的函数,如下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间能够用于定义参数。
- 函数的第一行语句能够选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,而且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return至关于返回 None。
函数调用
定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成之后,你能够经过另外一个函数调用执行,也能够直接从 Python 命令提示符执行。
以下实例调用了 printme() 函数:
#!/usr/bin/python3 #定义函数 def printme( str ): # 打印任何传入的字符串 print (str) return #调用函数 printme("我要调用用户自定义函数!") printme("再次调用同一函数")
以上实例输出结果:
我要调用用户自定义函数! 再次调用同一函数
Python3 模块
在前面的几个章节中咱们脚本上是用 python 解释器来编程,若是你从 Python 解释器退出再进入,那么你定义的全部的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
模块是一个包含全部你定义的函数和变量的文件,其后缀名是.py。模块能够被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
下面是一个使用 python 标准库中模块的例子。
#!/usr/bin/python3 # 文件名: using_sys.py import sys print('命令行参数以下:') for i in sys.argv: print(i) print('\n\nPython 路径为:', sys.path, '\n')
执行结果以下所示:
$ python using_sys.py 参数1 参数2 命令行参数以下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
Python3 File(文件) 方法
open() 方法
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都须要使用到这个函数,若是该文件没法被打开,会抛出 OSError。
注意:使用 open() 方法必定要保证关闭文件对象,即调用 close() 方法。
open() 函数经常使用形式是接收两个参数:文件名(file)和模式(mode)。
Python3 错误和异常
做为 Python 初学者,在刚学习 Python 编程时,常常会看到一些报错信息,在前面咱们没有说起,这章节咱们会专门介绍。
Python 有两种错误很容易辨认:语法错误和异常。
语法错误
Python 的语法错误或者称之为解析错,是初学者常常碰到的。
语法分析器指出了出错的一行,而且在最早找到的错误的位置标记了一个小小的箭头。
异常
即使 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。
大多数的异常都不会被程序处理,都以错误信息的形式展示在这里:
实例
>>> 10 * (1/0) # 0 不能做为除数,触发异常 Traceback (most recent call last): File "<stdin>", line 1, in ? ZeroDivisionError: division by zero >>> 4 + spam*3 # spam 未定义,触发异常 Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'spam' is not defined >>> '2' + 2 # int 不能与 str 相加,触发异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str
异常以不一样的类型出现,这些类型都做为信息的一部分打印出来: 例子中的类型有 ZeroDivisionError,NameError 和 TypeError。
错误信息的前面部分显示了异常发生的上下文,并以调用栈的形式显示具体信息。
Python3 面向对象
Python从设计之初就已是一门面向对象的语言,正由于如此,在Python中建立一个类和对象是很容易的。本章节咱们将详细介绍Python的面向对象编程。
若是你之前没有接触过面向对象的编程语言,那你可能须要先了解一些面向对象语言的一些基本特征,在头脑里头造成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。
接下来咱们先来简单的了解下面向对象的一些基本特征。
面向对象技术简介
- 类(Class): 用来描述具备相同的属性和方法的对象的集合。它定义了该集合中每一个对象所共有的属性和方法。对象是类的实例。
- 方法:类中定义的函数。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体以外。类变量一般不做为实例变量使用。
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重写:若是从父类继承的方法不能知足子类的需求,能够对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 局部变量:定义在方法中的变量,只做用于当前实例的类。
- 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
- 继承:即一个派生类(derived class)继承基类(base
class)的字段和方法。继承也容许把一个派生类的对象做为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。 - 实例化:建立一个类的实例,类的具体对象。
- 对象:经过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
和其它编程语言相比,Python 在尽量不增长新的语法和语义的状况下加入了类机制。
Python中的类提供了面向对象编程的全部基本功能:类的继承机制容许多个基类,派生类能够覆盖基类中的任何方法,方法中能够调用基类中的同名方法。
对象能够包含任意数量和类型的数据。