目录
可更改(mutable)与不可更改(immutable)对象
模块的引入:import 语句 / from…import* 语句
Python 简介:
-
Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。
-
Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
-
Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
-
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
Python 特点
-
1.易于学习:Python 有相对较少的关键字,结构简单,和明确定义的语法
-
2.易于阅读:Python 代码定义清晰。
-
3.易于维护:Python的 成功在于它的源代码易维护。
-
4.一个广泛的标准库:Python 有是丰富的库,跨平台, UNIX、Windows 和 Mac 兼容性强大
-
5.互动模式:互动模式的支持,可以从终端输入执行代码并获得结果,测试和调试代码。
-
6.可移植:基于其开放源代码的特性,Python 已经被移植(也就是使其工作)到许多平台。
-
7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C 或 C++ 完成那部分程序,然后从你的 Python 程序中调用。
-
8.数据库:Python 提供所有主要的商业数据库的接口。
-
9.GUI 编程:Python 支持 GUI 可以创建和移植到许多系统调用。
-
10.可嵌入: 你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得"脚本化"的能力。
Python 中文编码
-
Pycharm 设置步骤:
- 进入 file > Settings,在输入框搜索 encoding。
- 找到 Editor > File encodings,将 IDE Encoding 和 Project Encoding 设置为utf-8。
Python 变量类型
-
Python有五个标准的数据类型:
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
-
Python支持四种不同的数字类型:
- int(有符号整型)
- long(长整型,也可以代表八进制和十六进制)
- float(浮点型)
- complex(复数)
python 函数的参数传递:
-
python的字符串列表有2种取值顺序:(加号(+)是字符串连接运算符)
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
Python列表
-
List(列表) 是 Python 中使用最频繁的数据类型。
-
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾
Python 元组
元组是另一个数据类型,类似于 List(列表)
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表
Python 字典
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
Python数据类型转换
-
函数 描述 将x转换为一个整数
将x转换为一个长整数
将x转换到一个浮点数
创建一个复数
将对象 x 转换为字符串
将对象 x 转换为表达式字符串
用来计算在字符串中的有效Python表达式,并返回一个对象
将序列 s 转换为一个元组
将序列 s 转换为一个列表
转换为可变集合
创建一个字典。d 必须是一个序列 (key,value)元组。
转换为不可变集合
将一个整数转换为一个字符
将一个整数转换为Unicode字符
将一个字符转换为它的整数值
将一个整数转换为一个十六进制字符串
将一个整数转换为一个八进制字符串
Python 运算符
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
- 运算符优先级
Python算术运算符
-
以下假设变量: a=10,b=20:
运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 / 除 - x除以y b / a 输出结果 2 % 取模 - 返回除法的余数 b % a 输出结果 0 ** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000 // 取整除 - 返回商的整数部分(向下取整) >>> 9//2 4 >>> -9//2 -5
Python比较运算符
-
以下假设变量a为10,变量b为20:
运算符 描述 实例 == 等于 - 比较对象是否相等 (a == b) 返回 False。 != 不等于 - 比较两个对象是否不相等 (a != b) 返回 True。 <> 不等于 - 比较两个对象是否不相等。python3 已废弃。 (a <> b) 返回 True。这个运算符类似 != 。 > 大于 - 返回x是否大于y (a > b) 返回 False。 < 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量 True 和 False 等价。 (a < b) 返回 True。 >= 大于等于 - 返回x是否大于等于y。 (a >= b) 返回 False。 <= 小于等于 - 返回x是否小于等于y。 (a <= b) 返回 True。 Python赋值运算符
-
以下假设变量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 Python位运算符
-
运算符 描述 实例 & 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100 | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101 ^ 按位异或运算符:当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 ~ 按位取反运算符:将二进制表示中的每一位取反,0 变为 1,1 变为 0。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011 (以补码形式表示),在一个有符号二进制数的补码形式。 << 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000 >> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111 Python运算符优先级
-
运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,除,取模和取整除 + - 加法减法 >> << 右移,左移运算符 & 位 'AND' ^ | 位运算符 <= < > >= 比较运算符 <> == != 等于运算符 = %= /= //= -= += *= **= 赋值运算符 is is not 身份运算符 in not in 成员运算符 not and or 逻辑运算符 Python 条件语句
-
if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。
当判断条件为多个值时,可以使用以下形式:
-
if 判断条件1: 执行语句1…… elif 判断条件2: 执行语句2…… elif 判断条件3: 执行语句3…… else: 执行语句4……
Python 循环语句
-
Python 提供了 for 循环和 while 循环(在 Python 中没有 do..while 循环):
循环类型 描述 while 循环 在给定的判断条件为 true 时执行循环体,否则退出循环体。 for 循环 重复执行语句 嵌套循环 你可以在while循环体中嵌套for循环 -
循环控制语句
-
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:
控制语句 描述 break 语句 在语句块执行过程中终止循环,并且跳出整个循环 continue 语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 pass 语句 pass是空语句,是为了保持程序结构的完整性。 Python While 循环语句
-
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时,循环结束。
-
while 判断条件(condition):
执行语句(statements)……Python for 循环语句
-
for循环的语法格式如下:
for iterating_var in sequence: statements(s)
-
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
Python 循环嵌套
-
Python for 循环嵌套语法:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s) -
Python while 循环嵌套语法:
while expression:
while expression:
statement(s)
statement(s)Python 转义字符
-
转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \' 单引号 \" 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 \n 换行 \v 纵向制表符 \t 横向制表符 \r 回车 \f 换页 \oyy 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 \xyy 十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行 \other 其它的字符以普通格式输出 Python 字符串格式化
-
符 号 描述 %c 格式化字符及其ASCII码 %s 格式化字符串 %d 格式化整数 %u 格式化无符号整型 %o 格式化无符号八进制数 %x 格式化无符号十六进制数 %X 格式化无符号十六进制数(大写) %f 格式化浮点数字,可指定小数点后的精度 %e 用科学计数法格式化浮点数 %E 作用同%e,用科学计数法格式化浮点数 %g %f和%e的简写 %G %F 和 %E 的简写 %p 用十六进制数格式化变量的地址 -
格式化操作符辅助指令:
-
符号 功能 * 定义宽度或者小数点精度 - 用做左对齐 + 在正数前面显示加号( + ) <sp> 在正数前面显示空格 # 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') 0 显示的数字前面填充'0'而不是默认的空格 % '%%'输出一个单一的'%' (var) 映射变量(字典参数) m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
Python列表脚本操作符
-
列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
如下所示:
Python 表达式 结果 描述 len([1, 2, 3]) 3 长度 [1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合 ['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复 3 in [1, 2, 3] True 元素是否存在于列表中 for x in [1, 2, 3]: print x, 1 2 3 迭代 Python列表截取
-
Python 表达式 结果 描述 L[2] 'Taobao' 读取列表中第三个元素 L[-2] 'Runoob' 读取列表中倒数第二个元素 L[1:] ['Runoob', 'Taobao'] 从第二个元素开始截取列表 Python列表函数&方法
-
Python包含以下函数:
序号 函数 1 cmp(list1, list2)
比较两个列表的元素2 len(list)
列表元素个数3 max(list)
返回列表元素最大值4 min(list)
返回列表元素最小值5 list(seq)
将元组转换为列表Python包含以下方法:
序号 方法 1 list.append(obj)
在列表末尾添加新的对象2 list.count(obj)
统计某个元素在列表中出现的次数3 list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)4 list.index(obj)
从列表中找出某个值第一个匹配项的索引位置5 list.insert(index, obj)
将对象插入列表6 list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值7 list.remove(obj)
移除列表中某个值的第一个匹配项8 list.reverse()
反向列表中元素9 list.sort(cmp=None, key=None, reverse=False)
对原列表进行排序元组运算符
-
元组之间可以使用 + 号和 * 号进行运算,运算后会生成一个新的元组。
Python 表达式 结果 描述 len((1, 2, 3)) 3 计算元素个数 (1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接 ('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制 3 in (1, 2, 3) True 元素是否存在 for x in (1, 2, 3): print x, 1 2 3 迭代 元组索引,截取
-
L = ('spam', 'Spam', 'SPAM!')
Python 表达式 结果 描述 L[2] 'SPAM!' 读取第三个元素 L[-2] 'Spam' 反向读取,读取倒数第二个元素 L[1:] ('Spam', 'SPAM!') 截取元素 元组内置函数
-
序号 方法及描述 1 cmp(tuple1, tuple2)
比较两个元组元素。2 len(tuple)
计算元组元素个数。3 max(tuple)
返回元组中元素最大值。4 min(tuple)
返回元组中元素最小值。5 tuple(seq)
将列表转换为元组。字典内置函数&方法
-
Python字典包含了以下内置函数:
-
序号 函数及描述 1 cmp(dict1, dict2)
比较两个字典元素。2 len(dict)
计算字典元素个数,即键的总数。3 str(dict)
输出字典可打印的字符串表示。4 type(variable)
返回输入的变量类型,如果变量是字典就返回字典类型。Python字典包含了以下内置方法:
序号 函数及描述 1 dict.clear()
删除字典内所有元素2 dict.copy()
返回一个字典的浅复制3 dict.fromkeys(seq[, val])
创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值4 dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default值5 dict.has_key(key)
如果键在字典dict里返回true,否则返回false。Python3 不支持。6 dict.items()
以列表返回可遍历的(键, 值) 元组数组7 dict.keys()
以列表返回一个字典所有的键8 dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default9 dict.update(dict2)
把字典dict2的键/值对更新到dict里10 dict.values()
以列表返回字典中的所有值11 pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。12 popitem()
返回并删除字典中的最后一对键和值。格式化日期
-
python中时间日期格式化符号:
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00-59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
Python 定义函数
-
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
-
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
-
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
-
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
-
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
全局变量和局部变量
- 定义在函数内部的变量拥有一个局部作用域,定义在函数外部的拥有全局作用域。
Python 模块
-
模块的引入:import 语句 / from…import* 语句
Python面向对象
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 局部变量:定义在方法中的变量,只作用于当前实例的类。
- 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
- 实例化:创建一个类的实例,类的具体对象。
- 方法:类中定义的函数。
-
对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
-
Python中继承中的一些特点:
- 1、如果在子类中需要父类的构造方法就需要显式的调用父类的构造方法,或者不重写父类的构造方法。详细说明可查看: python 子类继承父类构造函数说明。
- 2、在调用基类的方法时,需要加上基类的类名前缀,且需要带上 self 参数变量。区别在于类中调用普通函数时并不需要带上 self 参数
- 3、Python 总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)
重载方法
-
序号 方法, 描述 & 简单的调用 1 __init__ ( self [,args...] )
构造函数
简单的调用方法: obj = className(args)2 __del__( self )
析构方法, 删除一个对象
简单的调用方法 : del obj3 __repr__( self )
转化为供解释器读取的形式
简单的调用方法 : repr(obj)4 __str__( self )
用于将值转化为适于人阅读的形式
简单的调用方法 : str(obj)5 __cmp__ ( self, x )
对象比较
简单的调用方法 : cmp(obj, x)Python内置类属性
- __dict__ : 类的属性(包含一个字典,由类的数据属性组成)
- __doc__ :类的文档字符串
- __name__: 类名
- __module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
- __bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组
类属性与方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的方法
在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,不能在类的外部调用。在类的内部调用 self.__private_methods
单下划线、双下划线、头尾双下划线说明:
-
__foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。
-
_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
-
__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了