1 使用類定義裝飾器
class Person(object):def __init__(self):self._age = 0@propertydef age(self):return self._age@age.setterdef age(self,newValue):print('觸發了嗎')self._age = newValuep = Person() print(p.age) # 0 p.age = 20 print(p.age) # 20
2 類屬性
class Person():def __init__(self):self._age =10def get_age(self):return self._agedef set_age(self,newValue):self._age = newValueage = 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_nameself.fileMode = file_modedef __enter__(self):print('進入上文方法')self.file = open(self.fileName,self.fileMode)return self.filedef __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 fileexcept 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:breakfinally:print('執行完了')6 悲波那契數列 def f(num):a = 0b = 1current_index = 0while current_index < num:result = aa,b = b, a+bcurrent_index += 1yield resultf1 = f(5) for value in f1:print(value)
7? 關于深淺拷貝
cory為淺拷貝函數?
import copya = 10b = copy.copy(a)print(id(a)) 140705368775384print(id(b)) 140705368775384b = 20print(a) # 10 print(b) # 20
list1 = [1,2,3,4,5,6,7] list2 = copy.copy(list1)print(id(list1)) # 1980239763648 print(id(list2)) # 1980239761792list2.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)) # 1980239761792list2[7][1] = 11print(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)) # 1980239761792list2[7][1] = 11print(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()