Python 生成器

1 生成器1.1 生成器定义生成器就是一个函数,有yield关键字,主要是针对函数的 123456789from collections import Iterable,Iteratordef test(): print("test") yield 1 yield 2g = test()print(g)print(isinstance(g,Iterator)) # 判断是否是迭代器对象 结果:generator object test at 0x00000000027FC780True 返回结果是证明生成器就是迭代器 证明了是迭代器,迭代器可以用next()执行,这里就是next(g) 1print(next(g)) 结果是:test1 结果是执行了一个test...

阅读全文

Python迭代器

什么是迭代1 迭代器通常我们认为的迭代是能够循环的,如字符串,列表,元组等,这些数据类型都是根据自身的索引值进行循环的。 实际上,我们也是需要对字典、集合、文件等内容进行循环读取其内容的,这些数据类型本身是无序的,也就是没有索引值,索引我们要对这些内容进行读取的时候就用到了迭代器。 1.1 可迭代对象可迭代的对象本身内置的iter()函数可以判断是否是可迭代对象 例如:123d = {'a': 1, 'b': 2}>>> d.__iter__()<dict_keyiterator object at 0x0000000002220138> 可迭代的对象都内置了.iter()方法,等同于iter(d). 函数的参数是可迭代的对象 1....

阅读全文

Python装饰器

关于开放封闭原则,其核心的思想是:软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。因此,开放封闭原则主要体现在两个方面:对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。“需求总是变化”、“世界上没有一个软件是不变的”,这些言论是对软件需求最经典的表白。从中透射出一个关键的意思就是,对于软件设计者来说,必须在不需要对原有的系统进行修改的情况下,实现灵活的系统扩展。 不修改源代码、不修改调用方式,上线后还需要扩展,就用到了装饰器装饰器可以是任何可调用对象 1 装饰器1.1 无参装饰器,为被装饰的函数添加统计时间功能 装饰器用到的是闭包函数,在下...

阅读全文

haproxy的增删改查(函数操作) 三次登录密码错误锁定

在构建一个程序项目之前,首先需要设计程序的框架,从总体上构建一个项目中的一个个功能,之后对每一个功能进行补充,最终实现总体的功能。 1 程序的总体框架:首先把所有的功能设计成相应的函数,用pass来实现。 1234567891011121314151617181920212223242526272829303132333435363738394041def add(operation): "增加" passdef remove(operation): "删除" passdef change(operation): "更改" passif __name__ == '__main__': msg =""" 1.查找 2.增加 3...

阅读全文

Python 字典dict、set集合

字典dictPython内置字典,通过key-value进行存储,字典是无序的,拓展hash 12names = ['Michael', 'Bob', 'Tracy']scores = [95, 75, 85] 给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。 用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢 123>>> d = {'aa':1,'bb':2,'cc':3}>>> d['aa'] # 可以直接根据名字来查找1 为什么dict查找速度这么快?因为dict的实现原理和查...

阅读全文

© 2018 Peter's Blog Center All Rights Reserved.
Theme by hiero