python基础学习笔记(个人学习时记录的笔记,不全的地方请大家指正)

来源:互联网 发布:vod视频提取软件 编辑:程序博客网 时间:2024/05/16 18:28
python 笔记
python 无处不对象
1.random 模块: 
randint  产生一个整数随机数
2.导入模块:import
接收输入:input()
输出打印:print()
输出时,可以 + 相连,也可以用 %
3.获取数据类型:type()
isinstance(待获取数据类型,数据类型)
4.操作符
and 一真为真 or全真为真 not取反布尔值
5.三元操作符语法: x if 条件 else y
如:small = x if x < y else y(成立为x,不成立为y)
6.断言 assert 跟条件  如:assert 3 > 4
条件为假的话,程序自动崩溃并抛出AssertionError的异常。
一般用在程序调试中。
7.while、if 条件后面加:用Tab控制作用域
if-elif
以if...:开头,使用elif...:创建测试链。当前面的条件不满足时才允许测试多个条件。即,elis...:仅在if...:语句返回False时才执行。
8.for 循环
语法:for 目标 in 表达式:
循环体
与range连用,range用法:range(起始数,结束数,递进的数值)
for 目标 in range():
循环体
break 跳出循环
continue 跳过本次循环,进行下一次循环
9.列表 (打了激素的数组)
创建列表  name = []
向列表添加元素:
append方法(只能在末尾添加一个)
name.append()
extend方法(可以添加多个,但是要以列表方式添加)
name.extend([元素1,元素2,...])
insert方法
name.insert(索引值(下标),元素)
从列表中获取元素:
name[索引值]
从列表删除元素:
remove方法
name.remove(元素)
del语句
del name[下标]  //也可以删除整个列表
pop方法 默认删除最后一个元素,并显示
name.pop() //删除最后一个
a = name.pop()//删除并赋值
name.pop(下标) //删除第几个元素
列表分片(切片)slice
name[下标1:下标2] //下标1或下标2可以省略,表示到最后或从最开始
分片拷贝是一个全新的,= 的只是一个指向的源列表。
列表常用操作符
列表常用方法
count 统计某个元素在列表中的出现次数
name.count(元素名)
index 找出元素在列表中第一个匹配项的位置
name.index(元素名)
name.index(元素名,起始位置,结束位置)
reverse 将列表中的元素反向存放
name.reverse()
sort  在源列表对列表进行排序
name.sort() //默认从小到大
name.sort(reverse = True)  //默认为False,从大到小排序

10.元组(戴上了枷锁的列表)
创建元组  name = ()
查看元组值 name = [下标]
元组的关键代表是 ,   创建只有一个数的元组,需要在最后加一个 ,
更新一个元素(利用分片)
name = name[:插入的位置下标] + (插入的元素,) + name[插入的位置下标:]   //注意插入的元素后面的  ,
删除一个元组
del name
删除一个元素
name = name[:要删除的元素前一个下标] + name[要删除的元素后一个下标:]
与元组相关的操作符
11.字符串
字符串也可以进行切片操作。
索引  name[下标]
插入和元组一样。
字符串方法(见字符串方法word)
常用字符串方法:
find方法:
find(sub[,start[,end]])检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1,start和end参数表示范围,可选。
join方法:
join(sub) 以字符串作为分割符,插入到sub中所有的字符之间。
lower方法:
lower() 转换字符串中所有大写字符为小写
replace方法:
replace(old,new[,count])把字符串中的old字符串替换成new子字符串,如果count指定,则替换不超过count次。
split方法:
split(sep = None,maxsplit = -1)join的逆方法
strip方法:
strip([chars])删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选。
translate方法:
translate(table)根据table的规则(可以由str.maketrans('a','b')定制)转换字符串中的字符
字符串格式化
12.序列
列表、元组和字符串的共同点
-都可以通过索引得到每一个元素
-默认索引值总是从0开始
-可以通过分片的方法得到一个范围内的元素集合
-有很多共同的操作符
list() 转换拆分成列表
name = list(name1)
str() 将对象转换成字符串
len() 返回长度
max() 返回最大值
min() 返回最小值
sum(name,再加这个参数'可以省略')
sorted()  从小到大排序
reversed()  逆转排序
list(reversed(name))
ebunerate() 枚举
list(ebunerate(name))
zip  合并相同的下标的name1和name2
list(zip(name1,name2))
13.函数
创建函数 def name():
函数内容
调用函数 name()
返回函数值  return
形参与实参
函数文档
创建文档 '文档内容'
查看文档 name.__doc__//是双下换线_ _
help(name)
关键字参数
name(参数1 = “”,参数2 = “ ”,……)
默认参数
在创建函数的时候可以给一个参数
name(参数1 = " ",参数2 = “ ”)
收集参数
参数前面加 *
name(*参数)  //可以传递 N 个参数
如果还有别的参数传递应该再使用 关键字参数 传递
作用域
局部与全局
在局部变量中修改全局变量
global 变量名
内嵌函数
闭包
nonlocal 变量名
lambda 表达式:
lambda 参数(可以多个参数) :表达式
调用:变量名 = lambda 参数 :含有参数的表达式
filter() 过滤器
用法:filter(筛选的条件,要筛选的序列)
如:筛选打印奇数:list(filter(lambda x: x % 2,[1,2,3,4,5,6,7,8,9]))
map() 映射
用法:map(改变的条件,要改变的序列)
如:所有数 *2 :list(map(lambda x : x * 2,[1,2,3,4,5,6,7,8,9]))
14.递归
python 中默认100层
汉诺塔问题
15.字典
唯一的映射类型
dict 工程函数(类型)
标志是{}
创建字典:name = {'键':'值',....}
name = dict(((元组或链表),(),()))
name = dict(键 = 值,....)
name[键] = '值' //改变或添加键与值
添加字典元素和键
name = {"键1" : "值1",……}
字典方法:
fromkeys方法:
他是重新创造一个字典
用法:name.fromkeys((键1,键2),'值')
keys方法:
返回字典 键 的引用
name.keys()
values方法:
返回字典 值 的引用
name.values()
items方法:
返回字典 项(键和值) 的引用
name.items()
get方法
找不到字典的值时返回一个值
name.get(键,'没有的话,要返回的内容')
in 或 not in
查找键是否在字典中
键 in 字典名
clear方法
清空字典
name.clear()
copy方法
浅拷贝
赋值地址不变,copy地址改变
id() //查看地址
pop方法
popitem方法
setdefault方法
update方法
16.集合
创建集合:name = {'','',...}
 name = set(['','',....])
内容全是唯一的,重复的将直接删除,并不支持索引
可以用for读取集合中的元素,用in检测是否在集合中
添加元素:
add方法
name.add(要添加的元素)
删除元素
remove方法
name.remove(要删除的元素)
定义不可变集合
frozenset
name = frozenset(集合元素)
17.文件
打开文件 open()
name = open(‘路径’,……)
打开模式与执行操作:
r 只读(默认) w 写,覆盖源文件 x 如果文件已存在,将引发异常
a 写,在文件末尾追加写入 b 二进制模式打开 t 文本模式打开(默认)
+ 可读写模式,添加到其他模式U 通用换行符支持
文件对象方法(name = f)
f.close() 关闭文件
f.read(size = -1)从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
f.readline() 以写入模式打开,若文件存在,则在末尾追加写入
f.write(str) 将字符串str写入文件
f.writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset,from)在文件中移动文件指针,从form(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell() 返回当前文件中的位置
屏幕打印:
for i in f:
print(i)
18.模块
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块的函数等功能
OS模块
见同目录下的os模块word文档
pickle模块(保存为文件)
保存为二进制文件,所以用 ‘wb’
保存 pickle.dump('保存前的文档','保存后的文档')
引入 pickle.load(文档名)
使用时要先打开,使用后要关闭。
推荐导入模块方法:
import 模块名 as 模块别名
调用时:模块别名.方法等等
19.异常处理
标准异常总结(见word版)
异常检测
1) try:
检测范围
except Exception(错误的异常参数)[as reason](as reason,把异常参数打印:)
出现异常(Exception)后提示的内容
注意:检测到异常后就不会执行以后的
2)try-finally
try:
检测范围
except Exception(错误的异常参数)[as reason](as reason,把异常参数打印:)
出现异常(Exception)后提示的内容
finally:
无论如何都会被执行的代码
3)raise 引发异常
raise 可以带 错误的异常参数
20.else语句
if-else
while-if(只在循环完成后使用)
for-else(只在循环完成后使用)
与异常处理搭配
21.with语句
自动关闭文件
with 文件操作 as name(文件变量名):
如: with open('data.txt','w') as f:
22.图形用户界面
EasyGui
#不建议在 IDLE 上运行EasyGui
23.类和对象
对象 = 属性 + 方法
python中的类名约定以大写字母开头
创建类对象
class 对象名:
例如:class Tirtle:
#属性
color = 'green'
legs = 4

#方法
def climb(self):
print("这是方法")
def run(self)
print("这也是方法")
封装,继承,多态
使用前需要实例化
如:a = Tirtle()
a.climb()
self 
定义私有变量:
在变量或函数名前加上'__' 两个下划线。
访问时用:__类名__变量名(是双下划线)
继承
定义:class DerivedClassName(BaseClassName基类、父类):
当子类中含有父类的相同方法时,子类覆盖父类方法。
解决以上方法:
调用未绑定的父类方法:
父类名字.方法名字
使用super函数:
super().需要的父类方法名()
多重继承
定义:class DerivedClassName(BaseClassName1基类1,BaseClassName2基类2,):
空的类:用pass
例:class Abc():
pass
组合
把几个类放在一个类中。
Mix-in

类、类对象和实例对象
属性名和方法名重复时,会被属性覆盖。
1)不要在一个类里边定义出所有的特性和方法,应该利用继承和组合机制来进行扩展。
2)python严格要求方法需要有实例化才能够被调用,这种限制就是python所谓的绑定概念。
绑定
方法里面必须加(self)  self实质也是一个对象,能够区分不同的用户的输入
调用时是将实例对象名称一起被传送
类对象被删除后,实例化对象的内容还会存在
相关的BIF(内置函数)
issubclass(class,classinfo)  检测class是否是classinfo的子类,是返回turn,否则返回false。classinfo可以使一个数列
isinstance(object,classinfo)检测object是否属于classinfo的实例对象,是返回turn,否则返回false。classinfo可以使一个数列
hasattr(object,'name') 检测一个对象object是否有name属性,name要用''括起来。
getattr(object,name[,default])
setattr(object,name,value)
delattr(object,name)
property(fget=None,fset=None,fdel=None,doc=None)
fget 获取属性的方法
fset 设置属性的方法
fdel 删除属性的方法
doc 属性的方法
设置一个属性,这个属性的作用是设置已经定义好的属性。
例:class C:
def __init__(self, size = 10):
self.size = size
def getSize(self):
return self.size
def setSize(self,value):
self.size = value
def delSize(self):
del self.size
x = property(getSize,setSize,delSize)
调用时可以这么写:
a1 = C()
a1.x //(将返回10这个数)
a1.x = 18 //(修改属性值)
del a1.x //删除
24.魔法方法 (都用 --包围)
构造和析构
__init__(self)方法
__new__( )方法
析构
__del__(self)
工厂函数

算数运算

简单定制

属性访问

描述符

定制序列
 
协议
容器类型的协议
定制的容器是不可变得,只需要定义__len__()和__getitem__()方法。
定义可变的容器,除了__len__()和__getitem__()方法,还需要定义__setitem__()和__delitem__()两个方法。
迭代器
iter()
__iter__()
next()
__next__()
生成器
定义生成器 yield
模块
任何一个.py的程序都是一个模块
命名空间

导入模块:import 模块名
 form 模块名 import 函数名
 import 模块名 as 新名字
 




1 0
原创粉丝点击