1 import logging 2 logger = logging.getLogger("log_example") 3 logger.setLevel(logging.DEBUG) 4 # 建立一个filehandler来把日志记录在文件里,级别为debug以上 5 #fh = logging.FileHandler("logfile.log") 6 #fh.setLevel(logging.DEBUG) 7 # 建立一个streamhandler来把日志打在CMD窗口上,级别为error以上 8 ch = logging.StreamHandler() 9 #ch.setLevel(logging.ERROR) 10 # 设置日志格式 11 #formatter = logging.Formatter("%(asctime)s - %(name)s -%(pathname)s %(filename)s %(funcName)s %(lineno)s - %(levelname)s - %(message)s") 12 formatter = logging.Formatter("%(asctime)s - %(lineno)s - %(levelname)s - %(message)s") 13 ch.setFormatter(formatter) 14 #fh.setFormatter(formatter) 15 #将相应的handler添加在logger对象中 16 logger.addHandler(ch) 17 #logger.addHandler(fh) 18 # 开始打日志 19 logger.debug("debug message") 20 21 22 #创建集合 23 set1 = set({1,2,'aa','bb'}) 24 set2 = {2,3,'bb','cc'} 25 print(set1,set2) 26 27 #增add 28 set1.add('a1') 29 logger.info(set1) 30 set1.update('a') 31 set1.update('你好') 32 logger.info(set1) 33 set1.update([11,12,13]) 34 logger.info(set1) 35 36 #删remove 37 set1.remove(13) 38 logger.info(set1) 39 set1.pop() 40 logger.info(set1) 41 del set1 42 #print(set1) 43 44 #交集 45 set1 = set({1,2,'aa','bb'}) 46 set2 = {2,3,'bb','cc'} 47 logger.info(set1 & set2) 48 logger.info(set1.intersection(set2) ) 49 50 #并集 51 logger.info(set1 | set2 ) 52 logger.info(set1.union(set2)) 53 54 #差集 55 logger.info(set1 - set2) 56 logger.info(set1.difference(set2)) 57 58 #反交集 59 logger.info(set1 ^ set2) 60 logger.info(set1.symmetric_difference(set2)) 61 62 #子集、超集 63 set1 = {1,2,3} 64 set2 = {1,2,3,4,5,6} 65 logger.info(set1 < set2) 66 logger.info(set1.issubset(set2)) 67 68 logger.info(set2 > set1) 69 logger.info(set2.issuperset(set1)) 70 71 set3 = frozenset(set1) 72 logger.info(set3) 73 logger.info(type(set3))
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
2018-08-25 19:20:55,541 - 19 - DEBUG - debug message {1, 2, 'bb', 'aa'} {'cc', 'bb', 2, 3} 2018-08-25 19:20:55,541 - 29 - INFO - {1, 2, 'a1', 'bb', 'aa'} 2018-08-25 19:20:55,542 - 32 - INFO - {1, 2, '你', 'a1', 'bb', '好', 'a', 'aa'} 2018-08-25 19:20:55,542 - 34 - INFO - {1, 2, '你', 'a1', 'bb', '好', 11, 12, 13, 'a', 'aa'} 2018-08-25 19:20:55,542 - 38 - INFO - {1, 2, '你', 'a1', 'bb', '好', 11, 12, 'a', 'aa'} 2018-08-25 19:20:55,542 - 40 - INFO - {2, '你', 'a1', 'bb', '好', 11, 12, 'a', 'aa'} 2018-08-25 19:20:55,542 - 47 - INFO - {2, 'bb'} 2018-08-25 19:20:55,542 - 48 - INFO - {2, 'bb'} 2018-08-25 19:20:55,542 - 51 - INFO - {1, 2, 3, 'bb', 'cc', 'aa'} 2018-08-25 19:20:55,542 - 52 - INFO - {1, 2, 3, 'bb', 'cc', 'aa'} 2018-08-25 19:20:55,542 - 55 - INFO - {1, 'aa'} 2018-08-25 19:20:55,542 - 56 - INFO - {1, 'aa'} 2018-08-25 19:20:55,542 - 59 - INFO - {1, 3, 'cc', 'aa'} 2018-08-25 19:20:55,542 - 60 - INFO - {1, 3, 'cc', 'aa'} 2018-08-25 19:20:55,542 - 65 - INFO - True 2018-08-25 19:20:55,542 - 66 - INFO - True 2018-08-25 19:20:55,542 - 68 - INFO - True 2018-08-25 19:20:55,542 - 69 - INFO - True 2018-08-25 19:20:55,542 - 72 - INFO - frozenset({1, 2, 3}) 2018-08-25 19:20:55,542 - 73 - INFO - <class 'frozenset'> Process finished with exit code 0