设为首页 加入收藏

TOP

[寒假学习笔记](二)Python初学(二)
2019-01-20 22:08:26 】 浏览:117
Tags:寒假 学习 笔记 Python 初学
r): def __init__(self, sth): """初始化父类""" super().__init__(sth) 类似C++中在初始化行构造父类
  1. 覆盖父类的函数/方法:只要子类的函数名和父类有的函数重复了就会override
  2. python的继承顺序,简要提一下:python2是深度优先,python3是广度优先,具体可以参考:Python类的继承
  • 其他:
    暂时没有学到什么东西了,碰到了再深入下去。
  • Python特殊的引用变量

    • 其实python中每个变量名所拥有的内容其实是一个引用(指针)指向的是一个静态池中的常量
    • 所以当变量给变量赋值的时候,给的值并不是他所对应的常量,而是将自己的指针的地址给了另一个变量,导致了这两个变量同时共享这一个常量
    • 如果改变一个变量中的值,即改变了这个常量的值,那么另一个变量的值也随之改变。
    • 因此在列表赋值的时候,不要直接用=,而是用a = s[:]的方式,因为s[:]是s的一份拷贝,新的列表,这就是上面所提到的一种copy,这种方法等效于a = s.copy()
      e.g.
    >>> a = [1, 2, [3, 4]]
    >>> b = a.copy()
    >>> b[0] = 3
    >>> b
        [3, 2, [3, 4]]
    >>> a
        [1, 2, [3, 4]]
    #a没有受到影响,拷贝成功
    • 但是,注意b这里是二维的,如果改变了第二位的列表中的值,a会受到影响吗。
      e.g.
    >>> b[2][0] = 123
    >>> b
        [3, 2, [123, 4]]
    >>> a
        [1, 2, [123, 4]]
    #a受到影响了!
    • 可以想象到,在copy的过程中是将a列表中每个元素的值重新拷贝了一份新的引用给b,但是,中间嵌套的列表[2, 3, 4](看做一个元素)的值其实是一个引用(这里要好好想一下哦),把一个一样的值(也就是地址一样的指针)给了b,那么其实b这个位置的元素和a这个位置的元素共享的是一个地址,会受影响。
    • 为了解决这个问题,import copy,使用copy.deepcopy()
      e.g.
    >>> b = copy.deepcopy(a)
    #此时b和a不会相互影响,自己做一下实验吧
    • 根据我自己的理解解释一下(下次去查一下官方说明),deepcopy所做的事情其实是递归copy,层层深入copy
    • 还有一件比较重要的事情:根据上述所说,operator =赋值的都是引用,因此函数在形实结合之后,函数体内改变形参同样会改变实参,如果不想这样,怎么做上面写了几个方法。有点像c++中默认传递T&(引用)类型。

    python中的多文件

    • 据我现在的理解,就是将函数,类写在别的.py文件,用的时候import即可。
    首页 上一页 1 2 下一页 尾页 2/2/2
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Python generator和yield介绍 下一篇大名鼎鼎的Requests库用了什么编..

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目