Python 介绍.md

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 的区别
    为了照顾现有程式,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 解释器
  • 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 RunoobTEST4.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: 运算符 描述 + 加 - 两个对象相加 - 减 - 得到负数或是一个数减去另一个数 * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 / 除 - x 除以 y % 取模 - 返回除法的余数 ** 幂 - 返回x的y次幂 // 取整除 - 返回商的整数部分 5.2 比较运算符以下假设变量a为10,变量b为20: 运算符 描述 == 等于 - 比较对象是否相等 != 不等于 - 比较两个对象是否不相等 > 大于 - 返回x是否大于y < 小于 - 返回x是否小于y >= 大于等于 - 返回x是否大于等于y。 <= 小于等于 - 返回x是否小于等于y。 5.3 赋值运算符以下假设变量a为10,变量b为20: 运算符 描述 = 简单的赋值运算符 += 加法赋值运算符 -= 减法赋值运算符 *= 乘法赋值运算符 /= 除法赋值运算符 %= 取模赋值运算符 **= 幂赋值运算符 //= 取整除赋值运算符 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 竖线 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 ^ 按位异或运算符:当两对应的二进位相异时,结果为1 ~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 << 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 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。 not in 如果在指定的序列中没有找到值返回 True,否则返回 False。 5.7 身份运算符身份运算符用于比较两个对象的存储单元 运算符 描述 is is是判断两个标识符是不是引用自一个对象 is not is not是判断两个标识符是不是引用自不同对象 5.8 运算符优先级 运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,除,取模和取整除 + - 加法减法 >> << 右移,左移运算符 & 位 'AND' ^ <= < > >= 比较运算符 <> == != 等于运算符 = %= /= //= -= += *= **= 赋值运算符 is is not 身份运算符 in not in 成员运算符 not or and 逻辑运算符 6、流程控制Python 条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。6.1 条件语句 if...elif...elsest=>start: Start e=>end: End cond=>condition: if 判断 cond1=>condition: elif 判断 io=>inputoutput: 代码1 io1=>inputoutput: 代码2 st->cond cond(yes)->io->e cond(no)->cond1 cond1(yes)->io1->e cond1(no)->e6.2 循环语句 循环类型 描述 while 循环 在给定的判断条件为 true 时执行循环体,否则退出循环体 for 循环 重复执行语句 嵌套循环 在while循环体中嵌套for循环、if 语句 控制语句 描述 break 在语句块执行过程中终止循环,并且跳出整个循环 continue 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环 pass pass是空语句,是为了保持程序结构的完整性 实例验证用户登录:用户信息正确显示欢迎信息,错误三次锁定用户#!/usr/bin/env python name = ("zhang","Alex","Rose") nub = ["123","456","789"] count = 0 while count < 3 : user = input("Please enter user name:") password = input("Please enter your password:") if user in name and password == nub[name.index(user)] : print("Welcome!") break else : count += 1 print("User or password error!") continue else : print("You have already lose the wrong password three times in a row, account is locked.")

    相关内容推荐