python 笔记碎片

1. import的使用

  import 导入一个包时,实际导入的是 __init__.py

  __all__ 控制的是 import * 中的 * 这个东西,其他的限制不了

  a.py和b.py循环导入时,不要再模块的开头导入,而是在使用到的代码前一行导入(这个使用只是能解决问题,但不提倡用,写之前更应该规划好逻辑,不要出现循环导入的情况)

 

3. 打印对象的所有属性值

"\n".join(["%s: %s" % item for item in obj.__dict__.items()])

 

4. python的内存回收

  python在内存中每个对象的引用计数,如果计数为0,则回收

  引用循环情况: 对象 Test1 和 Test2,符合Test1.x = Test2, Test2.x = Test1,如果Test1和Test2没有被其他代码引用,则在循环查找时会删除

  python中使用了某些启发式算法来加速回收,越晚创建的对象更有可能被删除,垃圾回收器会分配它们所属的代,每个对象都会被分配一个,更年轻的优先级高

 

5. __class__  (知识点是 “类的内存地址” 和 “实例的内存地址”)

  实例调用__class__,属性会指向该实例对应的类,然后可以去调用类其他的属性,毕竟类的属性还是由类调用看起来更清晰

  栗子:

    self.__class__.__name__    用 __class__ 将 self 的实例变量指向类

 

6. 一个小技巧

  python处理列表,循环列表的过程中,需要将一个值给删掉,此时可以使用倒叙循环,就不会由下标越界的情况,省去处理下标前移的工作

  for x in test_list[::-1]

    pass

posted @ 2019-10-28 01:53  SBJBA  阅读(154)  评论(0编辑  收藏  举报