• 深浅拷贝、集合set、函数、日志


    #-----深浅拷贝----

     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
  • 相关阅读:
    各种数字证书区别
    微信支付前端对接流程
    ts笔记 流动类型
    支付宝支付前端对接流程
    ts笔记索引签名
    [翻译]Selenium API 命令和操作(JAVA)
    玩一玩yolo目标检测
    快速上手MyBatis
    Swift快速入门
    Windows远程桌面后不能粘贴问题处理
  • 原文地址:https://www.cnblogs.com/rise-home/p/11581440.html
Copyright © 2020-2023  润新知