【九月打卡】第2天 Python体系补全ing

2022/9/7 4:22:55

本文主要是介绍【九月打卡】第2天 Python体系补全ing,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称: python必学模块-collections
课程章节: deque + Counter + OrderedDict + ChainMap
课程讲师: bobby
课程内容:

deque:双端队列

  • 特点:C写的,性能高
  • 初始化:deque(iterable)
    • list:[].pop()方法,可以弹出尾部元素
    • dequeue
      • appendleft:添加元素到队列头部
      • clear:清空数据
      • copy:返回一个浅拷贝(只拷贝里面的不可变元素)
        • 深拷贝:import copy; copy.deepcopy()
      • extend:将两个deque合并成一个,修改调用方法的那个deque
      • insert:插入元素
      • reverse:元素翻转
      • 魔法函数:就是python的协议,是python的解释器直接可以调用的函数
    • 应用场景:
      • Queue:python中的队列,底层就是deque
      • deque:是线程安全的,被GIL保护(list非线程安全)

Counter

  • 作用:对iterable做统计的
  • 使用:
    • Counter(xxxlist)
    • Counter(xxxstr)
    • .update(待合并统计的str)
    • .most_common(2):统计出出现top2的元素
      • 实现:用了_heapq.nlargest方法,堆的方法,性能比遍历高很多
  • 本质:dict的子类

OrderedDict

特点:

  • dict的子类
  • 以kv添加顺序为顺序(dict在py3中也有序,但在py2中无序)
    其他函数:
  • popitem:最后一个kv弹出
  • pop(key):弹出指定的kv
  • move_to_end(key):移动kv顺序

ChainMap

想遍历多个dict,一般需要写多个for循环
ChainMap可以把多个dict链接起来,进行遍历
目的是访问多个dict的时候,像访问一个dict一样操作的方便

  • cm = ChainMap(dict1, dict2)
  • 特点:多个dict中的相同key,遍历的时候只出现第一个key-v对儿
    方法:
  • new_chile(dict3, dict4) - 增加两个dict
  • chain_map.maps -> 返回个list指向里面的两个dict

课程收获:
collection模块补充了下,Counter比较有用,其他的用到的时候能想起来就行。嗯。

下节课学这个
图片描述

Py3 进阶

重载内建方法

举例:print(xxx)的本质是什么?

  • 调用了xxx对象的__str__()方法,类似其他语言里面的desc方法

特殊方法的特点:被__包裹

add()、len()…
所以系统函数的本质,都是调用了对象的内建方法。
图片描述

查看内建方法:dir(对象)
可以料想,dir本身应该也是个内建方法

  • __str__重写掉,可以print出想要内容
  • __repr__展示给开发者看的描述内容,represent,直接在控制台输出
  • __slots__用于限制需要对象添加的属性(写死属性)
    • __slots__ = ('name', 'gender', 'score')
  • __call__函数的本质是可调用对象,而可调用对象的本质是重载了这个内建方法
    • Person('Bob', 'Male')()重写了这个对象的__call__,这个对象就是一个可调用对象了(如果重写的时候__call__返回这个对象本身,那么就可以在后面无限写括号了p()()()()()()()()233333)

包和模块

模块导入,需要考虑解释器的模块搜索路径问题。
sys.path -> 显示解释器搜索路径

  • ’ ’ ->当前路径

函数式 & 高阶函数

map

map(func, list)



这篇关于【九月打卡】第2天 Python体系补全ing的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程