1 使用类定义装饰器
class Person(object): def __init__(self): self._age = 0 @property def age(self): return self._age @age.setter def age(self,newValue): print('触发了吗') self._age = newValue p = Person() print(p.age) # 0 p.age = 20 print(p.age) # 20
2 类属性
class Person(): def __init__(self): self._age =10 def get_age(self): return self._age def set_age(self,newValue): self._age = newValue age = property(get_age,set_age) p = Person() print(p._age) # 10 p.set_age(20) print(p._age) # 20
3 上下文管理器
class File(): def __init__(self,file_name,file_mode): self.fileName = file_name self.fileMode = file_mode def __enter__(self): print('进入上文方法') self.file = open(self.fileName,self.fileMode) return self.file def __exit__(self, exc_type, exc_val, exc_tb): print('进入下午方法') self.file.close() if __name__ =="__main__": with 语句 结合上下文 管理器对象使用 with File('log.txt','r') as file: file_data = file.read() print(file_data)
4 使用contextmanager装饰器
@contextmanager def my_open(path,mode): try: file = open(path,mode) yield file except Exception as e: print(e) finally: file.close() with my_open('log.txt','r') as file: file_data = file.read() print(file_data)
5 生成器的创建方式:
my_generator = (i*2 for i in range(3)) print(my_generator) print(next(my_generator)) # 0 print(next(my_generator)) # 2 print(next(my_generator)) # 4
my_generator = (i*2 for i in range(3)) while True: try: value = next(my_generator) print(value) #0 2 4 except Exception as e: break
def my_generator(): for i in range(10): print('开始生成数据') yield i # 函数中有yieid 代表生成了生成器 result = my_generator() while True: try: value = next(result) print(value) except Exception as e: break finally: print('执行完了') 6 悲波那契数列 def f(num): a = 0 b = 1 current_index = 0 while current_index < num: result = a a,b = b, a+b current_index += 1 yield result f1 = f(5) for value in f1: print(value)
7 关于深浅拷贝
cory为浅拷贝函数
import copy a = 10 b = copy.copy(a) print(id(a)) 140705368775384 print(id(b)) 140705368775384 b = 20 print(a) # 10 print(b) # 20
list1 = [1,2,3,4,5,6,7] list2 = copy.copy(list1) print(id(list1)) # 1980239763648 print(id(list2)) # 1980239761792 list2.append(8) print(list2) # [1, 2, 3, 4, 5, 6, 7, 8] print(list1) # [1, 2, 3, 4, 5, 6, 7]
list1 = [1,2,3,4,5,6,7,[8,9,10]] list2 = copy.copy(list1) print(id(list1)) # 1980239763648 print(id(list2)) # 1980239761792 list2[7][1] = 11 print(list2) # [1, 2, 3, 4, 5, 6, 7, [8, 11, 10]] print(list1) # [1, 2, 3, 4, 5, 6, 7, [8, 11, 10]]
深拷贝 :deepcopy
list1 = [1,2,3,4,5,6,7,[8,9,10]] list2 = copy.deepcopy(list1) print(id(list1)) # 1980239763648 print(id(list2)) # 1980239761792 list2[7][1] = 11 print(list2) # [1, 2, 3, 4, 5, 6, 7, [8, 11, 10]] print(list1) # [1, 2, 3, 4, 5, 6, 7, [8, 9, 10]]
8 正则表达式 re模块
import re
result = re.match(正则表达式,要匹配的字符串)
result.group()