迭代器 迭代器是py的一种对象,可以对数据集进行遍历,例如列表、元组、range()等等 实现了__iter__()和__next__()方法的对象,可以逐步遍历它的元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Foreach : def __init__ (self,start,end ): self .start = start self .end = end def __iter__ (self ): return self def __next__ (self ): if self .start >= self .end: raise StopIteration else : self .start+=1 return self .start-1 for i in Foreach(1 ,6 ): print (i)
生成器 根据程序员制定的规则循环生成数据,当条件不成立时生成数据结束,使用一个再生成一个,可以节约内存创建方式 生成器推导式
1 2 3 4 5 6 7 8 g=(i for i in range (1 ,11 ) if i%2 ==0 )print (g)print (next (g))for target in g: print (target)
上述代码中循环输出语句没有输出2是因为生成器是使用一个再生成一个,2在next中已经被使用了 yield关键字创建
1 2 3 4 5 6 7 8 9 def g (): for i in range (2 ,11 ,2 ): yield i g=g()print (g)print (next (g))for target in g: print (target)
结果与推导式的一致
Property属性(原型) 把函数当属性使用,可以简化代码使用 装饰器定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Person : def __init__ (self, name, age ): self .name = name self .__age = age @property def get_age (self ): return self .__age @get_age.setter def get_age (self, age ): self .__age = ageif __name__ == "__main__" : p=Person('john' , 18 ) p.get_age=20 print (p.get_age)
类属性定义
1 2 3 4 5 6 7 8 9 10 11 12 13 class Person : def __init__ (self, name, age ): self .name = name self .__age = age def get_age (self ): return self .__age def set_age (self, age ): self .__age = age age = property (get_age, set_age)if __name__ == "__main__" : p=Person('john' , 18 ) p.age=10 print (p.age)
正则 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 """ match默认从前往后匹配,匹配则返回 search是分段找,存在段匹配则返回 compile('正则表达式').sub(替换后的内容,要被替换的字符串) 常用规则 . 代表任意一个字符(\n除外) \. 取消.的特殊含义,就是一个普通的. [abc] 代表abc中任意一个字符 [^abc] 代表出了abc外任意的一个字符 \d 代表数字,等价于[0-9] \D 代表非数字 等价于[^0-9] * 数量词任意多个字符 + 匹配前一个字符多次 ? 匹配前一个字符0或1次 {m} 匹配前一个字符出现m次 {m,n} 匹配前一个字符出现从m到n次 \s 匹配空白,即空格,tab键 \S 匹配非空白 \w 匹配非特殊字符,如a-z,A-Z,0-9、_、汉字 \W 匹配特殊字符 ^ 匹配字符串开头 $ 匹配字符串结尾 | 匹配左右任意一个表达式 (ab)将括号中字符作为一个分组 \num 引用分组num匹配到字符串 (?P<分组名>)设置分组 (?P=分组名) """ res=re.match ('<([a-zA-Z]{1,4})>.*</\1>' ,html)
1 2 3 4 5 6 import re res=re.match ('校验规则' ,'被校验字符串' ) info=res.group()