python学习笔记第二周

一、字典
①映射
进行索引
在这里插入图片描述

②创造字典
1.

>>>dict={‘a’:’b’} 

a-key(键),b-value(值),a:b-项
在这里插入图片描述

2.空字典
在这里插入图片描述
3.元组参数形式
在这里插入图片描述
4.关键字参数
在这里插入图片描述
小甲鱼和苍井空不能加引号
4.1索引替换
在这里插入图片描述
4.2如果索引的没有在字典里
在这里插入图片描述
③内键
1.fromkeys(…)
在这里插入图片描述
2.批量修改
在这里插入图片描述
重新创造新的字典,而不是修改。
④访问字典
在这里插入图片描述
1.keys()
在这里插入图片描述
2.values()
在这里插入图片描述
3.items()
在这里插入图片描述
4.访问不存在的键
4.1报错
在这里插入图片描述

4.2用get赋值
在这里插入图片描述在这里插入图片描述

5.清空字典
clear()在这里插入图片描述
比较直接赋空字典和clear()
在这里插入图片描述
在这里插入图片描述
6.copy
拷贝非赋值
对比:
在这里插入图片描述
拷贝地址不同;赋值相同。
7.pop 弹出给定键盘输入的值
在这里插入图片描述
8.popitem 弹出一个项
在这里插入图片描述

随机弹出一个数据
9.setdefault
与get相似,但是找不到对应键时会自动添加,排序随机
在这里插入图片描述
10.update
运用字典或映射关系更新字典
在这里插入图片描述

二、集合
①与字典相似,没有体现映射关系。
字典代码:
在这里插入图片描述
集合代码:
在这里插入图片描述
②集合特点:
1.唯一:重复数据会被剔除
在这里插入图片描述
2.无序:无法进行索引
在这里插入图片描述

③如何创建一个集合
1.直接把一堆元素用花括号括起来(如上)
2.使用set()工厂函数
在这里插入图片描述

eg.去除重复元素
不用集合:
在这里插入图片描述

集合:
在这里插入图片描述

注意:使用set函数得到的结果是无序的。
④访问集合的值
1.使用for把集合中的数据一个个读取出来
2.通过in和not in判断一个元素是否在集合中已经存在
在这里插入图片描述

⑤内置方法
1.add()
在这里插入图片描述

2.remove()
在这里插入图片描述

⑥不可变集合
frozenset()
在这里插入图片描述

不能改变,所以不能添加。

三、文件
①打开文件
Open(‘文件名或路径’)
在这里插入图片描述
在这里插入图片描述

②文件对象方法
在这里插入图片描述

1.用完文件记得关闭!!
2.举例
在这里插入图片描述

3.迭代读取文件对象
效率低:
在这里插入图片描述

效率高:
在这里插入图片描述

4.写入文件
Write()(备注“w”)
在这里插入图片描述
在这里插入图片描述

③任务
在这里插入图片描述

1.利用分隔符筛选对话
在这里插入图片描述
在这里插入图片描述

2.利用函数简化代码
在这里插入图片描述
在这里插入图片描述

四、模块
①OS模块(跨操作系统)
有了OS模块,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。
在这里插入图片描述
在这里插入图片描述

②pickle模块
几乎所有数据类型的数据转化为二进制的形式储存;文件比较大做成泡菜形式,便于修改。
在这里插入图片描述

读取:

在这里插入图片描述

五、异常处理
①exception
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

②检测异常
1.try-except语句
try:
检测范围
except Exception[as reason]
出现异常后的处理代码
在这里插入图片描述

一个try语句可以搭配多个expect语句指明错误类型,也可以用一个expect元组报错,还可以单独用一个expect语句(不推荐)。

2.try-finally语句
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:
无论如何都会被执行的代码

确保一定执行(保存、关闭文件)
3.Raise语句
raise + 错误类型,主动产生一个错误

六、else语句和with语句
①if-else语句:要么怎样,要么不怎样
②while-else语句:干完了能怎么样,干不完就别想怎样
在这里插入图片描述

③except-else语句:没有问题,那就干吧
在这里插入图片描述

(出错)
④简洁的with语句
用 with打开文件不用考虑关闭文件
在这里插入图片描述

七、EasyGui
①建议不要再IDLE运行EasyGui
在这里插入图片描述

②尝试

在这里插入图片描述

八、类和对象
①对象 = 属性 + 方法(类名必须以大写字母开头)
在这里插入图片描述

调用
在这里插入图片描述

②OO面向对象的特征
封装、继承、多态
在这里插入图片描述

③self
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

⑤公有和私有(name mangling名字改编)
在变量前加两个下划线,理论上只有从内部访问。
伪私有:只是将变量名改为—类名—变量名。实际上没有权限控制。
在这里插入图片描述

⑥继承(父类、基类、超类 子类)
(子类变量名会自动覆盖父类变量名)
在这里插入图片描述

鱼吃鱼
在这里插入图片描述

Super()方法
在这里插入图片描述

多重继承(可以继承多个类的属性和方法,滥用会容易出现bug)
在这里插入图片描述

⑦拾遗
组合(水池里的鱼)
在这里插入图片描述

⑧Mix-in(鱼C论坛扩展阅读)
⑨类、类对象和实例对象
1.在这里插入图片描述
在这里插入图片描述

属性名字和方法名相同,属性会覆盖方法。
在这里插入图片描述

为避免:可以用不同的词性来区分。
2.绑定:python严格要求方法需要有实例才能被调用,这种限制其实就是python所谓的绑定概念。
在这里插入图片描述

⑩相关的BIF
1.issubclass(class,classinfo)
方法用于判断参数 class 是否是类型参数 classinfo 的子类。
2.isinstance()
函数来判断一个对象是否是一个已知的类型,类似 type()。
3.type() 与 isinstance()区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
4. hasattr( object,name)
用于判断对象是否包含对应的属性。
object – 对象。
name – 字符串,属性名。
5. getattr()
用于返回一个对象属性值。
getattr(object, name[, default])
object – 对象。
name – 字符串,对象属性。
default – 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
6. setattr()
用于设置属性值,该属性不一定是存在的。
setattr(object, name, value)
object – 对象。
name – 字符串,对象属性。
value – 属性值
7. property(fget=None, fset=None, fdel=None, doc=None)
作用是在新式类中返回属性值
fget – 获取属性值的函数
fset – 设置属性值的函数
fdel – 删除属性值函数
doc – 属性描述信息
在这里插入图片描述

九、魔法方法
类是抽象的,对象是具体的。
魔法方法是面向对象的python的一切。
① init ():
是用来设置原始参数的,不能设置任何返回不能return
② new ()
继承一些不可变的class时(比如int, str, tuple),提供自定义这些类的实例化过程的途径。
1.只有继承于object的新式类才能有 new 方法,一般系统自动调用
2. new 至少要有一个参数cls,代表要实例化的类
3. del (self)
当所有指向该类的标签被销毁后执行该操作
③反运算:反运算在运算符左右类型不同,且左边没用相应运算方法时被调用
④getattr(self,name)
定义当用户试图获取一个不存在的属性时的行为
getattr(被访问的属性不存在时)自动调用
⑤getattribute(self,name)
对于python来说,属性或者函数都可以被理解成一个属性,且可以通过__getattribute__获取
getattribute(属性在被访问时)自动调用
⑥setattr(self,name,value)
⑦delattr(self,name)
⑧描述符:将某种特殊类型的类的实例指派给另一个类的属性
1.get(self,instance,owner)
用于访问属性,返回属性的值
2.set(self,instance,value)
在属性分配操作中调用,不返回任何内容
3.delete(self,instance)
控制删除操作
⑩协议protocols
协议类似某些语言的接口,里面包含的是一些必须要实现的方法
⑪定制容器
1.如果希望容器不可变(eg.只需定义)
len(self) 返回容器中元素个数
getitem(self,key) 获取容器中指定元素
2.如果希望容器可变
除了 len()和 getitem ()还需定义:
setitem(self,key,value) 设置容器中指定元素
delitem(self,key) 删除容器中元素
⑫迭代器
1 iter() 将一个可以迭代的对象转为迭代器对象
2 next() 返回迭代器的一个元素,可设置参数变量
魔法方法
1.iter()
2. next()

十、生成器
生成器是迭代器的一种实现
协同程序就是可以运行的独立函数调用,函数可以暂停或者挂起,缤纷在需要的时候从程序离开的地方继续或者重新开始。
一个函数里面一旦被定义yield语句,这个函数就是生成器。
在这里插入图片描述
在这里插入图片描述

十一、模块
复习:
元组、字符串字典等:容器—>数据的封装
函数—>语句的封装
类—>方法和属性的封装也就是数据和语句的封装
①模块是更高级的封装,就是程序。保存的一个.py文件,就是一个独立的模块。模块要保存在和导入模块的源文件一个位置。
②导入模块
1.import 模块名
在这里插入图片描述

2.form 模块名 import 函数名
在这里插入图片描述

还可以使用*分配符
3.import 模块名 as 新名字(最推荐)
在这里插入图片描述

③if name == ‘ main ’
在这里插入图片描述

(加了这个之后test()是作为这个文件里的执行,不被其他程序调用)
④搜索路径
1.模块导入需要搜索的路径。实际上就是一个列表。
在这里插入图片描述

site-packages是存放模块最好的路径。
2.添加路径
在这里插入图片描述

⑤包(package)

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值