Python详细教程

小明 2025-05-04 03:45:44 12

一、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 
              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 
              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 
              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 
              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 语句的判断条件可以用>(大于)、=(大于等于)、 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:
                  #如果没有异常发生
The End
微信