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 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法。
三、Python下载
Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:
Python官网:Welcome to Python.org
你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。
Python文档下载地址:Our Documentation | Python.org
四、 Python基础
4.1 Python标识符
在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。
Python 可以同一行显示多条语句,方法是用分号 ; 分开,如:
- >>> print ('hello');print ('runoob');
- hello
- runoob
4.2Python保留字符
下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。
所有 Python 的关键字只包含小写字母。
4.3行和缩进
学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
- if True:
- print ("True")
- else:
- print ("False")
4.4Python引号
Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须是相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
- word = 'word'
- sentence = "这是一个句子。"
- paragraph = """这是一个段落。
- 包含了多个语句"""
4.5Python注释
python中单行注释采用 # 开头。
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- # 文件名:test.py
- # 第一个注释
- print ("Hello, Python!") # 第二个注释
python 中多行注释使用三个单引号 ''' 或三个双引号 """。
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- # 文件名:test.py
- '''
- 这是多行注释,使用单引号。
- 这是多行注释,使用单引号。
- 这是多行注释,使用单引号。
- '''
- """
- 这是多行注释,使用双引号。
- 这是多行注释,使用双引号。
- 这是多行注释,使用双引号。
- """
五、Python变量类型
5.1变量赋值
Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号 = 用来给变量赋值。
等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。例如:
- #!/usr/bin/python
- # -*- coding: UTF-8 -*-
- counter = 100 # 赋值整型变量
- miles = 1000.0 # 浮点型
- name = "John" # 字符串
- print counter
- print miles
- print name
以上实例中,100,1000.0和"John"分别赋值给counter,miles,name变量。
执行以上程序会输出如下结果:
- 100
- 1000.0
- John
5.2标准数据类型
在内存中存储的数据可以有多种类型。
例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。
Python 定义了一些标准类型,用于存储各种类型的数据。
Python有五个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
5.3Python数字
数字数据类型用于存储数值。
他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number 对象就会被创建:
- var1 = 1
- var2 = 10
Python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型,也可以代表八进制和十六进制)
- float(浮点型
- complex(复数)
实例
一些数值类型的实例:
Python math模块
Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中。
Python math 模块提供了许多对浮点数的数学运算函数。
Python cmath 模块包含了一些用于复数运算的函数。
cmath 模块的函数跟 math 模块函数基本一致,区别是 cmath 模块运算的是复数,math 模块运算的是数学运算。
要使用 math 或 cmath 函数必须先导入:
import math查看 math 查看包中的内容:
- >>> import math
- >>> dir(math)
- ['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
- >>>
Python数学函数
5.4Python字符串
字符串或串(String)是由数字、字母、下划线组成的一串字符。
一般记为 :
s = "a1a2···an"它是编程语言中表示文本的数据类型。
python的字串列表有2种取值顺序:
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。
当使用以冒号分隔的字符串,python 返回一个新的对象,结果包含了以这对偏移标识的连续的内容,左边的开始是包含了下边界。
上面的结果包含了 s[1] 的值 b,而取到的最大范围不包括尾下标,就是 s[5] 的值 f。
实例:
- str = 'Hello World!'
- print str # 输出完整字符串
- print str[0] # 输出字符串中的第一个字符
- print str[2:5] # 输出字符串中第三个至第六个之间的字符串
- print str[2:] # 输出从第三个字符开始的字符串
- print str * 2 # 输出字符串两次
- print str + "TEST" # 输出连接的字符串
以上实例输出结果:
- Hello World!
- H
- llo
- llo World!
- Hello World!Hello World!
- Hello World!TEST
Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:
5.5Python列表
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
访问列表中的值
实例:
- list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
- tinylist = [123, 'john']
- print list # 输出完整列表
- print list[0] # 输出列表的第一个元素
- print list[1:3] # 输出第二个至第三个元素
- print list[2:] # 输出从第三个开始至列表末尾的所有元素
- print tinylist * 2 # 输出列表两次
- print list + tinylist # 打印组合的列表
输出:
- ['runoob', 786, 2.23, 'john', 70.2]
- runoob
- [786, 2.23]
- [2.23, 'john', 70.2]
- [123, 'john', 123, 'john']
- ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
更新列表
可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:
- list = [] ## 空列表
- list.append('Google') ## 使用 append() 添加元素
- list.append('Runoob')
- print list
输出:
['Google', 'Runoob']删除列表元素
- list1 = ['physics', 'chemistry', 1997, 2000]
- print list1
- del list1[2]
- print "After deleting value at index 2 : "
- print list1
输出:
- ['physics', 'chemistry', 1997, 2000]
- After deleting value at index 2 :
- ['physics', 'chemistry', 2000]
- 列表截取
- >>>L = ['Google', 'Runoob', 'Taobao']
- >>> L[2]
- 'Taobao'
- >>> L[-2]
- 'Runoob'
- >>> L[1:]
- ['Runoob', 'Taobao']
- >>>
5.6 Python元组
元组是另一个数据类型,类似于 List(列表)。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
访问元组元素
实例:
- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
- tinytuple = (123, 'john')
- print tuple # 输出完整元组
- print tuple[0] # 输出元组的第一个元素
- print tuple[1:3] # 输出第二个至第四个(不包含)的元素
- print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
- print tinytuple * 2 # 输出元组两次
- print tuple + tinytuple # 打印组合的元组
输出:
- ('runoob', 786, 2.23, 'john', 70.2)
- runoob
- (786, 2.23)
- (2.23, 'john', 70.2)
- (123, 'john', 123, 'john')
- ('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
以下对元组的操作是无效的,因为元组不允许更新,而列表是允许更新的:
- tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
- list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
- tuple[2] = 1000 # 元组中是非法应用
- list[2] = 1000 # 列表中是合法应用
- 元组是不允许更新的,所以以上代码执行错误,结果如下:
- Traceback (most recent call last):
- File "test.py", line 6, in <module>
- tuple[2] = 1000 # 元组中是非法应用
- TypeError: 'tuple' object does not support item assignment
修改元组
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
- tup1 = (12, 34.56)
- tup2 = ('abc', 'xyz')
- # 以下修改元组元素操作是非法的。
- # tup1[0] = 100
- # 创建一个新的元组
- tup3 = tup1 + tup2
- print tup3
输出:
(12, 34.56, 'abc', 'xyz')删除元组
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
- tup = ('physics', 'chemistry', 1997, 2000)
- print tup
- del tup
- print "After deleting tup : "
- print tup
输出:
- ('physics', 'chemistry', 1997, 2000)
- After deleting tup :
- Traceback (most recent call last):
- File "test.py", line 9, in <module>
- print tup
- NameError: name 'tup' is not defined
元组内置函数
5.7Python字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key:value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
tinydict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
访问字典中的值
把相应的键放入熟悉的方括弧,如下实例:
- tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
- print "tinydict['Name']: ", tinydict['Name']
- print "tinydict['Age']: ", tinydict['Age']
输出:
- tinydict['Name']: Zara
- tinydict['Age']: 7
如果用字典里没有的键访问数据,会输出错误如下:
- tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
- print "tinydict['Alice']: ", tinydict['Alice']
输出:
- tinydict['Alice']:
- Traceback (most recent call last):
- File "test.py", line 5, in <module>
- print "tinydict['Alice']: ", tinydict['Alice']
- KeyError: 'Alice'
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
- tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
- tinydict['Age'] = 8 # 更新
- tinydict['School'] = "RUNOOB" # 添加
- print "tinydict['Age']: ", tinydict['Age']
- print "tinydict['School']: ", tinydict['School']
输出:
- tinydict['Age']: 8
- tinydict['School']: RUNOOB
删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
- tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
- del tinydict['Name'] # 删除键是'Name'的条目
- tinydict.clear() # 清空字典所有条目
- del tinydict # 删除字典
- print "tinydict['Age']: ", tinydict['Age']
- print "tinydict['School']: ", tinydict['School']
输出:
- tinydict['Age']:
- Traceback (most recent call last):
- File "test.py", line 10, in <module>
- print "tinydict['Age']: ", tinydict['Age']
- NameError: name 'tinydict' is not defined
六、Python运算符
6.1算数运算符
实例:
- a = 21
- b = 10
- c = 0
- c = a + b
- print "1 - c 的值为:", c
- c = a - b
- print "2 - c 的值为:", c
- c = a * b
- print "3 - c 的值为:", c
- c = a / b
- print "4 - c 的值为:", c
- c = a % b
- print "5 - c 的值为:", c
- # 修改变量 a 、b 、c
- a = 2
- b = 3
- c = a**b
- print "6 - c 的值为:", c
- a = 10
- b = 5
- c = a//b
- print "7 - c 的值为:", c
输出:
- 1 - c 的值为: 31
- 2 - c 的值为: 11
- 3 - c 的值为: 210
- 4 - c 的值为: 2
- 5 - c 的值为: 1
- 6 - c 的值为: 8
- 7 - c 的值为: 2
6.2比较运算符
6.3赋值运算符
6.4逻辑运算符
6.5成员运算符
七、条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
- if 判断条件:
- 执行语句……
- else:
- 执行语句……
实例:
- # 例1:if 基本用法
- flag = False
- name = 'luren'
- if name == 'python': # 判断变量是否为 python
- flag = True # 条件成立时设置标志为真
- print 'welcome boss' # 并输出欢迎信息
- else:
- print name # 条件不成立时输出变量名称
输出:
luren # 输出结果if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式:
- if 判断条件1:
- 执行语句1……
- elif 判断条件2:
- 执行语句2……
- elif 判断条件3:
- 执行语句3……
- else:
- 执行语句4……
实例:
- # 例2:elif用法
- num = 5
- if num == 3: # 判断num的值
- print 'boss'
- elif num == 2:
- print 'user'
- elif num == 1:
- print 'worker'
- elif num < 0: # 值小于零时输出
- print 'error'
- else:
- print 'roadman' # 条件均不成立时输出
输出:
roadman # 输出结果八 循环语句
Python的循环语句,程序在一般情况下是按顺序执行的。
编程语言提供了各种控制结构,允许更复杂的执行路径。
循环语句允许我们执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式:
Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环):
8.1while循环语句
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件(condition):
执行语句(statements)……
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时,循环结束。
执行流程图如下:
实例:
- count = 0
- while (count < 9):
- print 'The count is:', count
- count = count + 1
- print "Good bye!"
输出:
- The count is: 0
- The count is: 1
- The count is: 2
- The count is: 3
- The count is: 4
- The count is: 5
- The count is: 6
- The count is: 7
- The count is: 8
- Good bye!
8.2for循环语句
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
语法:
for循环的语法格式如下:
- for iterating_var in sequence:
- statements(s)
实例:
- for letter in 'Python': # 第一个实例
- print("当前字母: %s" % letter)
- fruits = ['banana', 'apple', 'mango']
- for fruit in fruits: # 第二个实例
- print ('当前水果: %s'% fruit)
- print ("Good bye!")
输出:
- 当前字母: P
- 当前字母: y
- 当前字母: t
- 当前字母: h
- 当前字母: o
- 当前字母: n
- 当前水果: banana
- 当前水果: apple
- 当前水果: mango
- Good bye!
6.3break语句
Python break语句,就像在C语言中,打破了最小封闭for或while循环。
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。
实例:
- for letter in 'Python': # 第一个实例
- if letter == 'h':
- break
- print '当前字母 :', letter
- var = 10 # 第二个实例
- while var > 0:
- print '当前变量值 :', var
- var = var -1
- if var == 5: # 当变量 var 等于 5 时退出循环
- break
- print "Good bye!"
输出:
- 当前字母 : P
- 当前字母 : y
- 当前字母 : t
- 当前变量值 : 10
- 当前变量值 : 9
- 当前变量值 : 8
- 当前变量值 : 7
- 当前变量值 : 6
- Good bye!
6.4continue语句
Python continue 语句跳出本次循环,而break跳出整个循环。
continue 语句用来告诉Python跳过当前循环的剩余语句,然后继续进行下一轮循环。
continue语句用在while和for循环中。
实例:
- for letter in 'Python': # 第一个实例
- if letter == 'h':
- continue
- print '当前字母 :', letter
- var = 10 # 第二个实例
- while var > 0:
- var = var -1
- if var == 5:
- continue
- print '当前变量值 :', var
- print "Good bye!"
输出:
- 当前字母 : P
- 当前字母 : y
- 当前字母 : t
- 当前字母 : o
- 当前字母 : n
- 当前变量值 : 9
- 当前变量值 : 8
- 当前变量值 : 7
- 当前变量值 : 6
- 当前变量值 : 4
- 当前变量值 : 3
- 当前变量值 : 2
- 当前变量值 : 1
- 当前变量值 : 0
- Good bye!
九、异常处理
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
- try:
- <语句> #运行别的代码
- except <名字>:
- <语句> #如果在try部份引发了'name'异常
- except <名字>,<数据>:
- <语句> #如果引发了'name'异常,获得附加的数据
- else:
- <语句> #如果没有异常发生
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |