Python全栈Day 19部分知识点(

发布时间:2019-03-12 22:59:43编辑:auto阅读(1967)

    深浅拷贝

      浅拷贝

    a=[[1,2],3,4]

    b=a[:]  #b=a.copy()

      浅拷贝 作用

    1 #共享账户
    2 husband=['Xiaohu',123,[15000,9000]] #姓名,卡号,额度,余额
    3 wife=husband.copy()  #浅拷贝
    4 wife[0]='Xiaomei'
    5 wife[1]=345
    6 husband[2][1]-=3000
    7 print(wife)

    输出

    ['Xiaomei', 345, [15000, 6000]]

     

    import copy

    浅拷贝copy.copy()

    深拷贝copy.deepcopy()

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 
     4 # a=[[1,2],3,4]
     5 # b=a.copy()
     6 # b[1]='cy'
     7 # print(a,b)
     8 # b[0][0]=5
     9 # print(a,b)
    10 import copy
    11 #共享账户
    12 husband=['Xiaohu',123,[15000,9000]]
    13 wife=husband.copy()
    14 wife[0]='Xiaomei'
    15 wife[1]=345
    16 xiaosan=copy.deepcopy(husband)  #深拷贝
    17 xiaosan[0]='xiaoling'
    18 xiaosan[1]=666
    19 xiaosan[2][1]-=1999
    20 husband[2][1]-=3000
    21 print(wife)
    22 print(xiaosan)

    输出

    ['Xiaomei', 345, [15000, 6000]]
    ['xiaoling', 666, [15000, 7001]]

    所以说,改变3,4的话不会使a改变,而改变1,2的时候会变。

     

    1 #!/usr/bin/env python
    2 # -*- coding:utf-8 -*-
    3 a=[[1,2],3,4]
    4 b=a.copy()
    5 b[1]='cy'
    6 print(a,b)
    7 b[0][0]=5
    8 print(a,b)

    输出

    [[1, 2], 3, 4] [[1, 2], 'cy', 4]
    [[5, 2], 3, 4] [[5, 2], 'cy', 4]

    修改可变对象(比如列表)会影响之前,修改不可变对象(整型)不会。

    a是一个列表(复杂数据类型),执行b=a之后,a,b共享一个内存空间,b相当于a的别名;而a是一个整型数字(简单数据类型),b=a,再改变a对b无影响。

    浅拷贝只会拷贝第一层。一般来说浅拷贝就够了,不然克隆一份会占很多空间。

    集合set(重点)

      集合对象是一组无序排列的可哈希的值:集合成员可以做字典的键(字典的键要求是可哈希的),集合本身不可以作为键。

      创建方式只有一种,s=set(...)

    1 #!/usr/bin/env python
    2 # -*- coding:utf-8 -*-
    3 s=set('alex li')
    4 print(s)

    输出

    {' ', 'x', 'l', 'i', 'a', 'e'}

      可以去重,是一组不同元素的组合,{}括起来。

      集合可以和列表相互转换,set(),list(),表象上看转变之后括号变了。

    1 #!/usr/bin/env python
    2 # -*- coding:utf-8 -*-
    3 l=['yangyang','yuanyuan','yangyang']
    4 s=set(l)
    5 print(s)
    6 l_new=list(s)
    7 print(l_new)

    输出

    {'yuanyuan', 'yangyang'}
    ['yuanyuan', 'yangyang']

      frozenset不可变集合  

      set集合的更新:add()  #添加一个元素  

                 update()  #将元素作为序列,遍历添加

               remove()  #括号内写要删除的元素名

               pop()  #随机删一个

               clear()  #清空集合中的元素

               del s  #删掉集合这个容器

     

      集合的等价print(set('alex')==set('alexexex'))  输出True  #等价

      子集和超集print(set('alex')==set('alexwwww'))  输出False

      交集intersection  #等效于a & b  #print(a.intersection(b))打印二者公有的元素组成的集合

      并集union  #等效于a | b

      差集difference  #等效于a - b  #print(a.difference(b))打印在a中却不在b中的元素组成的集合

      反向交集(对称差集:集合A与集合B的对称差集定义为集合A与集合B中所有不属于A∩B的元素的集合)  #等效于a ^ b  symmetric_difference  除去公有元素之外的元素组成的集合

      issuperset超集判断  #等效于a > b  例如a.issuperset(b)判断的是a是否为b的超集

      issubset子集判断  #等效于a < b

    函数

      函数!=数学中的function()

      计算机函数(语句的封装) == subroutine 子程序  procedure 过程

      作用

        1.减少重复代码;

        2.方便修改,更易扩展;

        3.保持代码一致性

      函数名命名规则:

        下划线或字母开头,由字母、数字、下划线组成,不可使用任意标点;

        区分大小写;

        不能是保留字(python内部用的名字)。

      返回当前时间的操作:import time  time_format='%Y-%m-%d %X'  time_current=time.striftime(time_format)

      关于return:return意味着函数结束。如果没有回返回None;如果返回多个对象,python会把它们封装成元组返回。

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 #高大上加法器
     4 def  add(*args):    #不定长参数  *args元组(无名参数)  **kwargs字典(有名参数)
     5     print(args)
     6     sum=0
     7     for i in args:
     8         sum+=i
     9     print(sum)
    10 add(1,2,3,4,5,6)

    输出

    (1, 2, 3, 4, 5, 6)
    21

      函数参数位置顺序:关键字参数-默认参数-*args-**kwargs

     

      函数的作用域

     

      

     

     

      

关键字

上一篇: Python命名规范

下一篇: if 条件判断