zoukankan      html  css  js  c++  java
  • 100 Python 介绍

    Python 介绍

    Python 是一种面向对象解释型计算机程序设计语言(也可以面向过程),是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。
    Python 具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

    • 面向过程:以指令为中心,由指令处理数据,如何组织代码解决问题
    • 面向对象:以数据为中心,所有的处理代码都围绕数据展开,如何设计数据结构组织数据,并提供对此类数据所允许处理操作

    • 编译型:运行前先由编译器将高级语言代码编译为对应机器的cpu汇编指令集,再由汇编器汇编为目标机器码,生成可执行文件,然最后运行生成的可执行文件。不能跨平台,最典型的代表语言为C/C++,一般生成的可执行文件及.exe文件。
    • 解释型:在运行时由翻译器将高级语言代码翻译成易于执行的中间代码,并由解释器(例如浏览器、虚拟机)逐一将该中间代码解释成机器码并执行(可看做是将编译、运行合二为一了)。运行速度相对于编译型语言要慢,最典型的代表语言为JavaScript、Python、Ruby和Perl等

    1、Python 的版本

    目前使用的 Python 版本有 2.x 和 3.x,2.7 以后不再继续更新,所以 3.x 是以后的主流

    Python 2.x 和 3.x 的区别

    http://www.cnblogs.com/codingmylife/archive/2010/06/06/1752807.html
    为了照顾现有程式,Python 2.6 作为一个过渡版本,基本使用了 Python 2.x 的语法和库,同时考虑了向 Python 3.0 的迁移,允许使用部分 Python 3.0 的语法与函数。

    • print 函数。Py3.x 中 print 语句没有了,取而代之的是 print() 函数。 Python 2.6 与Python 2.7 部分地支持这种形式的print语法。
    • 字符编码和字符串。Py3.x 源码文件默认使用 utf-8 编码,字符串只有 str 一种类型
    • 除法运算。Py3.x 中除法对于整数之间的相除不会只取整数,有小数位也会是浮点数,取整除需要 // 运算符
    • 比较运算符。去除了 <>,全部改用!=
    • 数据类型。Py3.X 去除了 long 类型,现在只有一种整型—— int,但它的行为就像 2.X 版本的 long

    提示

    系统自带的 python 可能版本很低,但并不是可以直接替换新版本,因为可能有许多程序

    解决方法
    编译安装新版 python 到指定路径

    [root@Centos ~]# python
    Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
    
    相关依赖(否则交互式使用时无法回退)
    [root@Centos ~]# yum -y install readline-devel
    [root@Centos ~]# tar xf Python-3.6.0.tar
    [root@Centos ~]# cd Python-3.6.0/
    
    ./configure --prefix=/usr/local/Python-3.6.0
    make && make install 
    

    2、Python 基础语法

    2.1 字符编码

    • Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。
    • Python2.X 源码文件 默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

    解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了

    ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
    GB2312 为了处理汉字,1980 年程序员设计了 用于简体中文的 GB2312 和繁体中文的 big5。收录了 7445 个字符(6763 个数字和 682 个其他符号)
    **GBK1.0 **由于 GB2312 收录的汉字太少,1955 年汉字扩展规范 GBk1.0 收录了 21886 个字符(21003个汉字,和图形符号)
    **GB18030 **2000 年 GB18030 取代 GBK1.0 成为正式国家标准,收录了 27484 个汉字,同时收录了主要少数民族文字。现在 PC 必须支持 GB18030
    Unicode 为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由 16 位来表示(2 个字节)以满足跨语言、跨平台进行文本转换、处理的要求。
    UTF-8 是一种针对 Unicode 的压缩和优化,不再最少使用 2 个字节,ASCII 码中的内容用 1 个字节保存呢、欧洲字符用 2 个字节保存,东亚的字符用 3 个字节保存

    2.2 变量规范

    • 第一个字符必须是字母表中字母或下划线'_'。
    • 标识符的其他的部分有字母、数字和下划线组成。
    • 标识符对大小写敏感。

    下面变量关键字已被系统定义,不能声明:

    >>> import keyword
    >>> keyword.kwlist
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif','else','except', 'finally', 'for', 'from', 'global', 'if','import', 'in','is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    

    2.3 注释

    单行注释用 # 即可,多行数据可以在开头结尾使用三个单引号 '''

    2.4 行与缩进

    python 最具特色的就是使用缩进来表示代码块,不需要使用大括号({})。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。

    2.5 多行语句

    Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:

    >>> name = ("zzz",
    ... "bbb")
    >>> name
    ('zzz', 'bbb')
    >>> name[0]
    'zzz'
    

    3、Python 解释器

    当我们编写 Python 代码时,我们得到的是一个包含 Python 代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。常见的解释器有:CPython、Ipython、pypy、JPython、IronPython。

    • CPython 一个官方版本的解释器,C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython用“>>>”作为提示符

    • IPython 基于 CPython 之上的一个交互式解释器,IPython 只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。IPython 用In [序号]:作为提示符。

    • PyPy 是另一个 Python 解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

    • Jython 是运行在 Java 平台上的 Python 解释器,可以直接把 Python 代码编译成 Java 字节码执行。

    • IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

    4、Python3 数据类型

    Python 的基本数据类型有 5 种: 数字(number),字符型(string),列表(list),元祖(tuple),集合(sets),字典(dictionary)

    4.1 数字(number)

    Python3 支持 int(整型)、float(浮点型)、bool(布尔值)、complex(复数)。

    浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如, 1.23x109 和 12.3x108 是相等的。

    布尔值和布尔代数的表示完全一致,一个布尔值只有 True 、 False 两种值

    数字转换

    • int(x) 将x转换为一个整数。

    • float(x) 将x转换到一个浮点数。

    • complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

    • complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式

    4.2 字符串

    字符串是以''或""括起来的任意文本,比如 'abc' , "xyz" ,同时使用反斜杠()转义特殊字符。

    索引值以 0 为开始值,-1 为从末尾的开始位置。加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数。实例如下:

    #!/usr/bin/python3
    
    str = 'Runoob'
    
    print (str)          # 输出字符串
    print (str[0:-1])    # 输出第一个个到倒数第二个的所有字符
    print (str[0])       # 输出字符串第一个字符
    print (str[2:5])     # 输出从第三个开始到第五个的字符
    print (str[2:])      # 输出从第三个开始的后的所有字符
    print (str * 2)      # 输出字符串两次
    print (str + "TEST") # 连接字符串
    

    执行以上程序会输出如下结果:

    Runoob
    Runoo
    R
    noo
    noob
    RunoobRunoob
    RunoobTEST
    

    4.3 列表

    List(列表) 是 Python 中使用最频繁的数据类型,列表可以完成大多数集合类的数据结构实现。

    • 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)

    • 列表是写在方括号 [] 之间、用逗号分隔开的元素列表。

    • 和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

    列表的操作参数

    列表的内置函数 解释
    len(list) 列表元素个数
    max(list) 返回列表元素最大值
    min(list) 返回列表元素最小值
    list(seq) 将元组转换为列表
    list.append(obj) 在列表末尾添加新的对象
    list.count(obj) 统计某个元素在列表中出现的次数
    list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
    list.insert(index, obj) 将对象插入列表
    list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    list.remove(obj) 移除列表中某个值的第一个匹配项
    list.reverse() 反向列表中元素
    list.sort([func]) 对原列表进行排序
    list.clear() 清空列表
    list.copy() 复制列表

    4.3 元祖

    元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

    4.5 集合

    集合(set)是一个无序不重复元素的序列。
    基本功能是进行成员关系测试和删除重复元素。
    可以使用大括号 {} 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典

    4.6 字典

    字典(dictionary)是Python中另一个非常有用的内置数据类型。
    列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,列表通过偏移存取

    字典是一种映射类型,字典用"{}"标识,它是一个无序的键(key) : 值(value)对集合。
    键(key)必须使用不可变类型。且在同一个字典中,键(key)必须是唯一的。

    #!/usr/bin/python3
    
    dict = {}
    dict['one'] = "1 - 教程"
    dict[2]     = "2 - 工具"
    
    tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
    
    print (dict['one'])       # 输出键为 'one' 的值
    print (dict[2])           # 输出键为 2 的值
    print (tinydict)          # 输出完整的字典
    print (tinydict.keys())   # 输出所有键
    print (tinydict.values()) # 输出所有值
    

    以上实例输出结果:

    1 - 教程
    2 - 工具
    {'name': 'runoob', 'site': 'www.runoob.com', 'code': 1}
    dict_keys(['name', 'site', 'code'])
    dict_values(['runoob', 'www.runoob.com', 1])
    
    字典的内置函数 解释
    len(dict) 计算字典元素个数,即键的总数
    str(dict) 输出字典以可打印的字符串表示
    type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型
    radiansdict.clear() 删除字典内所有元素
    radiansdict.copy() 返回一个字典的浅复制
    radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    radiansdict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
    key in dict 如果键在字典dict里返回true,否则返回false
    radiansdict.items() 以列表返回可遍历的(键, 值) 元组数组
    radiansdict.keys() 以列表返回一个字典所有的键
    radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里
    radiansdict.values() 以列表返回字典中的所有值

    5、运算符

    Python 的运算符有:

    • 算术运算符
    • 比较(关系)运算符
    • 赋值运算符
    • 逻辑运算符
    • 位运算符
    • 成员运算符
    • 身份运算符
    • 运算符优先级

    5.1 算术运算符

    以下假设变量a为10,变量b为21:

    | 运算符 | 描述 | 实例 |
    |---||
    | + | 加 - 两个对象相加 | a + b 输出结果 31 |
    | - | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -11 |
    | * | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 210 |
    | / | 除 - x 除以 y | b / a 输出结果 2.1 |
    | % | 取模 - 返回除法的余数 | b % a 输出结果 1 |
    | ** | 幂 - 返回x的y次幂 | a**b 为10的21次方 |
    | // | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |

    5.2 比较运算符

    以下假设变量a为10,变量b为20:

    | 运算符 | 描述 | 实例 |
    |---||
    | == | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
    | != | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
    | > | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
    | < | 小于 - 返回x是否小于y | (a < b) 返回 true。 |
    | >= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
    | <= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |

    5.3 赋值运算符

    以下假设变量a为10,变量b为20:

    | 运算符 | 描述 | 实例 |
    |---||
    | = | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
    | += | 加法赋值运算符 | c += a 等效于 c = c + a |
    | -= | 减法赋值运算符 | c -= a 等效于 c = c - a |
    | *= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
    | /= | 除法赋值运算符 | c /= a 等效于 c = c / a |
    | %= | 取模赋值运算符 | c %= a 等效于 c = c % a |
    | **= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
    | //= | 取整除赋值运算符 | c //= a 等效于 c = c // a |

    5.4 位运算符

    按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:

    下表中变量 a 为 60,b 为 13二进制格式如下:

    a =  0011  1100 
    b =  0000  1101
    ----------------- 
    a&b =  0000  1100 
    a|b =  0011  1101 
    a^b =  0011  0001  
     ~a =  1100  0011
    

    | 运算符 | 描述 | 实例 |
    |---||
    | & | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 |(a & b) 输出结果 12 ,二进制解释: 0000 1100 |
    | 竖线 | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a 或 b) 输出结果 61 ,二进制解释: 0011 1101 |
    | ^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
    | ~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
    | << | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
    | >> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |

    5.5 语言支持逻辑运算符

    以下假设变量 a 为 10, b为 20:

    | 运算符 | 逻辑表达式 | 描述 | 实例 |
    |---||||
    | and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
    | or | x or y | 布尔"或" - 如果 x 是 True,它返回 True,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
    | not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |

    5.6 成员运算符

    除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。

    | 运算符 | 描述 | 实例 |
    |---||
    | in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
    | not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |

    5.7 身份运算符

    身份运算符用于比较两个对象的存储单元

    | 运算符 | 描述 | 实例 |
    |---||
    | is | is是判断两个标识符是不是引用自一个对象 | x is y, 如果 id(x) 等于 id(y) , is 返回结果 1 |
    | is not | is not是判断两个标识符是不是引用自不同对象 | x is not y, 如果 id(x) 不等于 id(y). is not 返回结果 1 |

    5.8 运算符优先级

    | 运算符 | 描述 |
    |---||
    | ** | 指数 (最高优先级) |
    | ~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
    | * / % // | 乘,除,取模和取整除 |
    | + - | 加法减法 |
    | >> << | 右移,左移运算符 |
    | & | 位 'AND' |
    | ^ | | 位运算符 |
    | <= < > >= | 比较运算符 |
    | <> == != | 等于运算符 |
    | = %= /= //= -= += *= **= | 赋值运算符 |
    | is is not | 身份运算符 |
    | in not in | 成员运算符 |
    | not or and | 逻辑运算符 |

  • 相关阅读:
    Mybatis学习笔记
    Java——设计模式
    Java——多线程
    Java——集合
    DAO层、Service层、Controller层、View层
    Mybatis整合spring
    Spring中的DI和IOC
    事务
    Xml实现AOP
    2018.3.10考试的试题解析
  • 原文地址:https://www.cnblogs.com/workhorse/p/6384595.html
Copyright © 2011-2022 走看看