# 深淺拷貝 1 import copy 2 3 a = ["xiaoming",111,[5000,2000]] 4 b = a 5 print("b:%s" % b) #a,b共用同一塊記憶體地址,輸出結果b:['xiaoming', 111, [5000, 2000]] 6 7 #淺拷貝只拷貝第 ...
#-----深淺拷貝----
1 import copy 2 3 a = ["xiaoming",111,[5000,2000]] 4 b = a 5 print("b:%s" % b) #a,b共用同一塊記憶體地址,輸出結果b:['xiaoming', 111, [5000, 2000]] 6 7 #淺拷貝只拷貝第一層,第二層指針指向共用[5000,2000] 8 c = a.copy() #淺拷貝 9 c[0] = "xiaowang" 10 c[1] = 222 11 a[2][1] -= 300 12 print("c:%s" % c) #c:['xiaowang', 222, [5000, 1700]] 13 14 d = copy.copy(a) #淺拷貝 15 d[0] = "xiaoyang" 16 d[1] = 333 17 d[2][1] -= 700 18 print("d:%s"% d) #d:['xiaoyang', 333, [5000, 1000]] 19 20 #深拷貝,克隆相同的一份 21 e = copy.deepcopy(a) #深拷貝 22 e[2][1] += 1000 23 print("e:%s" % e) #e:['xiaoming', 111, [5000, 2000]]
#----集合(set)-----
#集合把不同的元素組合在一起
1 a = set("python project") 2 print(a) #{'c', ' ', 'p', 'e', 'h', 'j', 'y', 'o', 't', 'r', 'n'} 3 b = set(["python","linux","java","linux"]) 4 print(b,type(b)) #{'python', 'java', 'linux'} <class 'set'> #set去重 5 print(list(b)) #['java', 'linux', 'python'] #轉為列表
#集合對象是一組無序排列可哈西的值,集合成員可以做字典的鍵
1 li = [[1,2],'a','b'] 2 s = set(li) 3 print(s) #TypeError: unhashable type: 'list' 4 5 a = [1,2,"a","z"] 6 b = set(a) 7 c = {"info":b} 8 print(c) #{'info': {'a', 1, 2, 'z'}}
#集合分類:可變集合、不可變集合
#可變集合(set):可添加和刪除元素,集合(set)是非可哈希的,不能用做字典的鍵,也不能做其他集合的元素。
#不可變集合(frozenset) 不能添加和刪除
#創建集合
1 a1 = set(("test","hello")) 2 print(a1) #{'test', 'hello'}
#訪問集合
1 #-----in,not in 判斷是否在集合中 2 a2 = set(["dream","rise",1,2,4]) 3 print("dream" in a2) #True 4 print("rise" not in a2) #False
#-----for 迴圈遍歷
1 for i in a2: 2 print(i)
#集合中添加、修改、刪除元素
1 #-----add 添加 2 a2.add("uu") 3 print(a2) #{1, 2, 'uu', 4, 'dream', 'rise'} 4 5 #-----update 更新 6 a2.update("abs") 7 print(a2) #{1, 2, 4, 'dream', 'a', 'rise', 'uu', 's', 'b'} 8 9 a3 = {1, 2, 4, 'dream', 'rise'} 10 a3.update([12,"hello",1]) 11 print(a3) #{1, 2, 'hello', 4, 12, 'rise', 'dream'} 12 13 #-----刪除 14 a3.remove(1) 15 print(a3) #{'dream', 2, 4, 12, 'hello', 'rise'} 16 17 a3.pop() #隨機刪除 18 print(a3) #{4, 12, 'dream', 'rise', 'hello'} 19 20 a3.clear() #清空集合 21 print(a3) 22 23 del a2 #刪除集合 24 print(a2)
#-----集合操作-----
1 #集合等價於不等價 2 print(set("test") == set("tesssssttt")) #等價 #True 3 print(set("test")!= set("tesssssttt")) 4 5 a = set([1,2,3,4,5,6,7]) 6 b = set([3,4,5,6,7,8,9]) 7 8 print(a & b) #交集{3, 4, 5, 6, 7} 9 print(a | b) #並集{1, 2, 3, 4, 5, 6, 7, 8, 9} 10 print(a - b) #差集{1, 2} 11 print(b - a) #差集{8, 9} 12 print(a ^ b) #對稱差集{1, 2, 8, 9} 13 14 #-----子集、超集(父集) 15 print(a > b) 16 print(a < b)
#-----函數-----
#-----作用:
1、減少重覆代碼
2、方便修改
3、保持代碼一致性
#-----函數的命名規則:
1、函數名必須以下劃線或字母開頭,可以包含任意字母、數字或下劃線組合。
2、不能使用任何的標點符號
3、函數名是區分大小寫
4、函數名不能是保留字
#-----形參和實參
形參:形式參數,不是實際存在,是虛擬變數。
實參:實際參數,電泳函數時傳給函數的參數。
#-----logging模塊-----
1 import logging 2 3 logger = logging.getLogger() #創建logger對象 4 5 fh = logging.FileHandler('test.log') #創建文件輸出對象 6 7 sh = logging.StreamHandler() #創建屏幕輸出對象 8 9 formater = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 10 11 fh.setFormatter(formater) 12 sh.setFormatter(formater) 13 14 logger.addHandler(fh) #添加文件輸出 15 logger.addHandler(sh) #添加屏幕輸出 16 17 logger.setLevel(logging.WARNING) #添加日誌級別 18 19 logger.debug('debug message1') 20 logger.info('info message2') 21 logger.warning('warning message3') 22 logger.error('error message4') 23 logger.critical('critical message5')
#-----logging屏幕輸出、文件寫入日誌信息-----
1 2019-09-24 16:48:27,485 - root - WARNING - warning message3 2 2019-09-24 16:48:27,485 - root - ERROR - error message4 3 2019-09-24 16:48:27,486 - root - CRITICAL - critical message5