Python笔记 【无序】 【五】

描述符

将某种特殊类型的类【只要实现了以下或其中一个】的实例指派给另一个类的属性

1.__get__(self,instance,owner)//访问属性,返回属性的值

2.__set__(self,instance,value)//将在属性分配【即赋值】中调用,不返回任何内容

3.__delete__selfinstance//控制删除操作,不反回任何内容

重写property

Del ---delete

练习

 

定制序列【定制容器】 容器---序列【字符串,元组,列表】+映射类型【字典】

 

练习  不可变类型 记录每个元素的访问次数

*args表示参数可变数量

self.values = [x for x in args]    //列表推导式的形式,把参数放到列表values

接着第二行为字典的初始化操作,键值对---数值-访问次数【全化为0】的形式

 

 

 

 

 

迭代器

【提供迭代方法的容器称为迭代器】 ---as字典,字符串,元组

 

常利用for循环!

for i in “xxxxx”:

Print(i)

迭代器内置函数:

iter(xxx)   容器对象调用iter()得到迭代器

nextxxx返回下一个值,没有值可以返回了,python就抛出StopIteration的异常

 

string = "ssada"

a = iter(string)

 

迭代器的魔法方法:

__iter__()

__next__()

生成器【特殊的函数,可终端、暂停可暂时交还控制权】

 

生成器【特殊的迭代器,是他的一个实现】

函数中有yield语句,此函数被定义为生成器

 

斐波那契数列:

列表推导式:

字典推导式:

集合推导式:

生成器推导式

 

()括起来的,,,,,,

yield = return //不过有暂停功能

 

模块【更高级的封装】

 

即保存了一个.py的程序文件即是模块

 

导入模块

1.

import xx

xx.yy() ----使用导入模块中的方法

2.

form 模块名 import 函数名

yy()

3.

import 模块名 as  新名字

x.yy() ----使用导入模块中的方法

 

__name____main__、搜索路径和包

 

可以在每个模块后编写测试方法 ---

def test():

    ……

test() //调用

 

防止模块中测试方法在主程序中被使用显示

__name__

'__main__' //主程序中如此显示

xx.__name__

'显示模块名' //模块中如此显示

 

搜索路径

 

import 包名.模块名

 

posted @ 2019-04-13 10:39  远征i  阅读(150)  评论(0编辑  收藏  举报