导图社区 python基础及应该方向学习
python基础及应该方向学习,内容有人工智能、数据分析、爬虫、web、基础,大家也可以用于备考复习。
编辑于2023-09-04 00:40:39 江苏省python
人工智能
行业
互联网
金融
交通
安防
特征工程
特征编码
缺失值处理
特征选择
特征扩展
机器学习算法
分类
决策树
SVM
贝叶斯
聚类
K-Means
回归
线性回归
逻辑回归
数学基础
线性代数
高等数学
概率论
AI应用产品
聊天机器人
自动驾驶
人脸识别
语音识别
推荐系统
AI框架
Scikit-learn
Tensorflow
Spark MLlib
模型优化
模型融合
参数搜索
算法优化方法
梯度下降
牛顿法
深度学习算法优化方法
深度学习
深度学习基础
CNN
LeNet5
inception
ResNet
RNN
LSTM
增强学习
Q-Learn
DQN
数据分析
科学计算工具:Numpy
Numpy基础数据结构
Numpy通用函数
Numpy索引及切片
Numpy随机数
Numpy数据的输入输出
数据分析工具:Pandas
数据结构series:基本概念及创建
数据结构series:索引
数据结构series:基本技巧
数据结构dataframe:基本概念及创建
数据结构dataframe:索引
数据结构dataframe:基本技巧
时间模块
时刻数据
时间戳索引
时期
时间序列
数值计算和统计基础
文本数据
合并
连接与修补
去重及替换
数据分组
分组转换及一般性“拆分-应用-合并”
透视表及交叉表
文件读取
图表绘制工具:Matplotlib
图表的基本元素
图表的样式参数
刻度、注解、图表输出
子图
常用图表
关联
散点图
带边界的气泡图
带线性回归最佳拟合线的散点图
抖动图
计数图
边缘直方图
边缘箱型图
相关图
矩阵图
偏差
发散型条形图
发散型文本
发散型包点图
带标记的发散型棒棒糖图
面积图
排序
有序条形图
棒棒糖图
包点图
坡度图
哑铃图
分布
连续变量的直方图
类型变量的直方图
密度图
直方密度线图
joy plot
分布式包点图
包点+箱型图
dot+box plot
小提琴图
人口金字塔
分类图
组成
华夫饼图
饼图
树形图
条形图
变化
时间序列图
带波峰波谷标记的时序图
自相关和部分自相关图
交叉相关图
时间序列分解图
多个时间序列
使用辅助y轴来绘制不同范围的图形
带有误差带的时间序列
堆积面积图
未堆积面积图
日历热力图
季节图
分组
树状图
安德鲁斯曲线
平行坐标
空间分析工具:GIS
什么是空间数据
GIS软件基本操作及数据加载
坐标 系
空间数据基本处理
空间数据几何计算
空间可视化制图
空间划分
空间统计
爬虫
读懂网页结构
html
网页基本元素标签
网页结构
网页脚本语言js
网络资源访问工具:requests
requests基本语法
发送url请求
基本参数设置
相应信息解读
cookie设置
错误与异常解决
网页信息解析方法:xpath与BeautifulSoup
基本语法
xpath与lxml包
网页标签解析
遍历文档树
搜索文档树
正则表达式
基本语法
字符匹配与扫描
检索与替换
字符分割
修饰符
字符查找
修饰符
ToolBar工具栏设置
其他交互工具设置
爬虫数据库:MongoDB
数据库创建与删除
文档处理
子主题
web
基础
变量及数值类型
数值类型概述
标准数据类型
可变数据(3个)
List列表
列表中元素的类型可以不同,它支持数字,字符串甚至可以包含列表(所谓嵌套)
Dictionary字典
1.列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 2.字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。 3.键(key)必须使用不可变类型。 4.在同一个字典中,键(key)必须是唯一的。
Set集合
1.集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。 2.基本功能是进行成员关系测试和删除重复元素。 3.可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
不可变数据(3个)
Number数字
int、float、bool、complex
String字符串
1.Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。 2.索引值以 0 为开始值,-1 为从末尾的开始位置 3.Python 使用反斜杠(\)转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串。 4.字符串可以用+运算符连接在一起,用*运算符重复。
Tuple元组
1.可以把字符串看作一种特殊的元组 2.构造包含0个或者1个元素的元组比较特殊 tup1 = () # 空元组 tup2 = (1,)# 一个元素,需要在元素后添加逗号
如何区分可变和不可变
1.不可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。比如:int,str,tuple 2.可变数据类型:当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。比如:list,set,dict 总结:不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变
认识变量
1.Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 2.在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。 3.Python允许你同时为多个变量赋值
运算符
算数运算符
+ - * / % ** //
比较(关系运算符)
== != > < >= <=
赋值运算符
= += -= *= /= %= **= //=
逻辑运算符
and x and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。
or x or y 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。
位运算符
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
| 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^ 按位异或运算符:当两对应的二进位相异时,结果为1
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<< 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>> 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数
成员运算符
in 如果在指定的序列中找到值返回 True,否则返回 False。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。
身份运算符
is is 是判断两个标识符是不是引用自一个对象
is not is not 是判断两个标识符是不是引用自不同对象
运算符优先级
从高到低:** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,除,取模和取整除 + - 加法减法 >> << 右移,左移运算符 & 位 'AND' ^ | 位运算符 <= < > >= 比较运算符 == != 等于运算符 = %= /= //= -= += *= **= 赋值运算符 is is not 身份运算符 in not in 成员运算符 not and or 逻辑运算符
注释
1.Python中单行注释以 # 开头 2.多行注释可以用多个 # 号,还有 ''' 和 """
序列及通用操作
什么是序列
序列是Python中最基本的数据结构
序列通用操作
索引,切片,加,乘,检查成员
列表list常用操作
如何打乱一个list中的元素
from random import shuffle mylist = [....] shuffle(mylist)
列表函数
cmp(list1, list2) 比较两个列表的元素
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([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) 移除列表中某个值的第一个匹配项
list.reverse() 反向列表中元素
list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序
文本序列str常用操作
format 格式化函数
数字格式化
3.1415926 {:.2f} 3.14 保留小数点后两位 3.1415926 {:+.2f} +3.14 带符号保留小数点后两位 -1 {:+.2f} -1.00 带符号保留小数点后两位 2.71828 {:.0f} 3 不带小数 5 {:0>2d} 05 数字补零 (填充左边, 宽度为2) 5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4) 10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4) 1000000 {:,} 1,000,000 以逗号分隔的数字格式 0.25 {:.2%} 25.00% 百分比格式 1000000000 {:.2e} 1.00e+09 指数记法 13 {:>10d} 13 右对齐 (默认, 宽度为10) 13 {:<10d} 13 左对齐 (宽度为10) 13 {:^10d} 13 中间对齐 (宽度为10) 11 '{:b}'.format(11) 1011 进制 '{:d}'.format(11) 11 '{:o}'.format(11) 13 '{:x}'.format(11) b '{:#x}'.format(11)0xb '{:#X}'.format(11)0XB ^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。 + 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格 b、d、o、x 分别是二进制、十进制、八进制、十六进制。
字符串内建函数
string.capitalize() 把字符串的第一个字符大写 string.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 string.count(str, beg=0, end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 string.decode(encoding='UTF-8', errors='strict') 以 encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 的 异 常 , 除非 errors 指 定 的 是 'ignore' 或 者'replace' string.encode(encoding='UTF-8', errors='strict') 以 encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' string.endswith(obj, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. string.expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。 string.find(str, beg=0, end=len(string)) 检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 string.format() 格式化字符串 string.index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在 string中会报一个异常. string.isalnum() 如果 string 至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False string.isalpha() 如果 string 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False string.isdecimal() 如果 string 只包含十进制数字则返回 True 否则返回 False. string.isdigit() 如果 string 只包含数字则返回 True 否则返回 False. string.islower() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False string.isnumeric() 如果 string 中只包含数字字符,则返回 True,否则返回 False string.isspace() 如果 string 中只包含空格,则返回 True,否则返回 False. string.istitle() 如果 string 是标题化的(见 title())则返回 True,否则返回 False string.isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False string.join(seq) 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 string.ljust(width) 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 string.lower() 转换 string 中所有大写字符为小写. string.lstrip() 截掉 string 左边的空格 string.maketrans(intab, outtab]) maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 max(str) 返回字符串 str 中最大的字母。 min(str) 返回字符串 str 中最小的字母。 string.partition(str) 有点像 find()和 split()的结合体,从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string. string.replace(str1, str2, num=string.count(str1)) 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次. string.rfind(str, beg=0,end=len(string) ) 类似于 find()函数,不过是从右边开始查找. string.rindex( str, beg=0,end=len(string)) 类似于 index(),不过是从右边开始. string.rjust(width) 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 string.rpartition(str) 类似于 partition()函数,不过是从右边开始查找 string.rstrip() 删除 string 字符串末尾的空格. string.split(str="", num=string.count(str)) 以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+ 个子字符串 string.splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 string.startswith(obj, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查. string.strip([obj]) 在 string 上执行 lstrip()和 rstrip() string.swapcase() 翻转 string 中的大小写 string.title() 返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) string.translate(str, del="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 del 参数中 string.upper() 转换 string 中的小写字母为大写 string.zfill(width) 返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0
字典映射
字典dict基本概念
字典是另一种可变容器模型,且可存储任意类型对象。
字典常用操作
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对
删除字典元素
del dict['Name'] # 删除键是'Name'的条目 dict.clear() # 清空字典所有条目 del dict # 删除字典
字典内置函数
1 cmp(dict1, dict2) 比较两个字典元素。 2 len(dict) 计算字典元素个数,即键的总数。 3 str(dict) 输出字典可打印的字符串表示。 4 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
字典内置方法
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 6 dict.items() 以列表返回可遍历的(键, 值) 元组数组 7 dict.keys() 以列表返回一个字典所有的键 8 dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default 9 dict.update(dict2) 把字典dict2的键/值对更新到dict里 10 dict.values() 以列表返回字典中的所有值 11 pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 12 popitem() 返回并删除字典中的最后一对键和值。
字典的元素访问及遍历
条件判断及循环语句
if语句
for循环
while循环
循环控制语句
break 语句 在语句块执行过程中终止循环,并且跳出整个循环 continue 语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。 pass 语句 pass是空语句,是为了保持程序结构的完整性。
函数
函数的基本概念
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。
自定义函数
你可以定义一个由自己想要功能的函数,以下是简单的规则: 1.函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。 2.任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 3.函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 4.函数内容以冒号起始,并且缩进。 5.return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
参数
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
默认参数
调用函数时,默认参数的值如果没有传入,则被认为是默认值。
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数
局部变量及全局变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。
如果要给函数内的全局变量赋值,必须使用 global 语句。
匿名函数lambda
lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。lambda 函数不能包含命令,它们所包含的表达式不能超过一个
dir()函数
dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。 返回的列表容纳了在一个模块里定义的所有模块,变量和函数。
globals() 和 locals() 函数
根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。 如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。 如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。 两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。
reload() 函数
当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。 因此,如果你想重新执行模块里顶层部分的代码,可以用 reload() 函数。该函数会重新导入之前导入过的模块。
模块与包
模块创建及import指令运用
搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是: 1、当前目录 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。 模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
包的概念及python包管理工具:pip
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。 简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空。__init__.py 用于标识当前文件夹是一个包。
数据读写
文件对象及基本操作
一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。
File对象的属性
file.closed 返回true如果文件已被关闭,否则返回false。 file.mode 返回被打开文件的访问模式。 file.name 返回文件的名称。 file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
close()方法
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。 当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。
write()方法
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。 write()方法不会在字符串的结尾添加换行符('\n'):
read()方法
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
文件定位
tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。 seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。 如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
重命名
os.rename(current_file_name, new_file_name)
删除
os.remove(file_name)
系统模块下的路径操作
文件的读取与写入
pickle模块的运用
垃圾回收机制
垃圾回收机制(简称GC)是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间,主要运用了引用计数机制来跟踪和回收垃圾。在引用计数的基础上,还可以通过标记-清除解决容器对象可能产生的循环引用的问题。通过分代回收以空间换取时间进一步提高垃圾回收的效率。
引用计数机制
Python中万物皆对象。每个对象都会记录着自己被引用的个数,当一个对象的引用数为0时,它占据的内存将被回收。 (1)增加引用个数的情况:对象被创建;被引用;被当作参数传入函数;被存储到容器对象中。 (2)减少引用个数的情况:对象的别名被销毁;别名被赋予其他对象;对象离开自己的作用域;对象从容器对象中删除,或者容器对象被销毁。 循环引用问题: 如果a引用b, b也引用a, 导致相互引用的对象的引用计数永远不为0,内存也就永远不会被释放。
标记-清除
在了解标记清除算法前,我们需要明确一点,内存中有两块区域:堆区与栈区,在定义变量时,变量名存放于栈区,变量值存放于堆区,内存管理回收的则是堆区的内容。 标记-清除只关注那些可能会产生循环引用的对象,比如list、dict、set、class等,因为它们内部可能很持有其它对象的引用。 原理: 标记:标记的过程其实就是,遍历所有的GC Roots对象(栈区中的所有内容或者线程都可以作为GC Roots对象),然后将所有GC Roots的对象可以直接或间接访问到的对象标记为存活的对象。 清除:清除的过程将遍历堆中所有的对象,将没有标记的对象全部清除掉。
分代回收
分代回收的核心思想是:经多次扫描没有被回收的变量,肯定是常用变量,应该降低对其扫描的频率。 python将所有的对象分为0,1,2三代。新建对象都是0代。当某一代对象经历过垃圾回收,依然存活,那么它就被归入下一代对象。垃圾回收启动时,一定会扫描所有的0代对象。如果0代经过一定次数垃圾回收,那么就启动对0代和1代的扫描清理。当1代也经历了一定次数的垃圾回收后,那么会启动对0,1,2,即对所有对象进行扫描。
import gc # 手动回收 gc.collect() # 检测自动回收是否开启 gc.isenabled() # 开启自动回收 gc.enable() # 关闭自动回收 gc.disable() # 获取自动回收配置 print gc.get_threshold() # 结果:(700, 10, 10)每10次0代垃圾回收,会配合1次1代的垃圾回收;而每10次1代的垃圾回收,才会有1次的2代垃圾回收。可用set_threshold()来调整。
面向对象
基本特征
类Class
用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
方法
类中定义的函数。
类变量
类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员
类变量或者实例变量用于处理类及其实例对象的相关的数据。
方法重写
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写
局部变量
定义在方法中的变量,只作用于当前实例的类。
实例变量
在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
继承
即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
实例化
创建一个类的实例,类的具体对象。
对象
通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
捕获异常
使用try和except语句来捕获异常
1 try: 2 block 3 except [exception,[data…]]: 4 block 5 6 try: 7 block 8 except [exception,[data...]]: 9 block 10 else: 11 block
用raise语句手工引发一个异常
1 raise [exception[,data]] 2 3 try: 4 raise MyError #自己抛出一个异常 5 except MyError: 6 print 'a error' 7 8 raise ValueError,’invalid argument’
采用sys模块回溯最后的异常
1 import sys 2 try: 3 block 4 except: 5 info=sys.exc_info() 6 print info[0],":",info[1]
多线程编程
内置函数
hasattr()
用于判断对象是否包含对应的属性。
hasattr(object, name)