Miscellaneous collection in Python

发布于 2021-10-24  644 次阅读


长期不用很容易忘记的kk

  • 对于某一对象object,使用dir(object)可以查看其所有可调用函数,尤其包括内置函数;使用id(object)将返回其唯一标识符,也即内存地址,便于我验证python混乱的动态引用机制。
  • 可以使用//1来向下取整,例如int(44.5//1)=44
  • example(*args, **kwargs)这两种可变参数在不同阶段有不同的使用方法:
    • 声明阶段:
      • *参数收集所有未匹配的位置参数组成一个tuple对象,局部变量args指向此tuple对象
      • **参数收集所有未匹配的关键字参数组成一个dict对象,局部变量kwargs指向此dict对象
    • 调用阶段:
      • *参数用于解包tuple对象的每个元素,作为一个一个的位置参数传入到函数中
      • **参数用于解包dict对象的每个元素,作为一个一个的关键字参数传入到函数中
  • 如果想一边遍历列表一边删除或添加元素的话, 可以额外创建一个列表的引用: for i in data_list[:]
  • 如果想一边遍历字典一边删除或添加字典的话, 是会报错"dictionary changed size during iteration", 因此只能额外创建一个新字典, 此外, 对字典内某一个值进行修改是可以的
  • 对于[i:j:k]
    • b=a[i:j:k]取a从i开始每隔k(直到不超过j-1)的离散位置到b, 如i/i+k/i+2k/.../小于j的最大的i+?k
    • b=a[::-1]将a逆置存入b
  • 不同的数据结构可以放在同一个List里
  • strings, tuples, numbers是不可更改的对象, 而list, dict等则是可以修改的对象
  • 嵌套函数想使用外部的变量最好用nonlocal
  • 自从python3.0之后,取消了int的上下限,但是程序运行所处的系统环境和解释器决定了程序可使用的比如列表或字符串的长度上限,可以通过(sys包就是用来访问解释器维护的一些变量或函数的)sys.maxsize来获取该值,因此在python中常以其来赋值int的上限,至于下限可视情况而定设为0或-sys.maxsize-1
  • 新建一个长为n的列表应为list = [None] * n,注意必须得有None,因为* n实际上是重复n次引用赋值这个行为,如果没有None,那么引用地址都是空的,自然也不会有* n的效果。

暂时还没找到人生乐趣的消极家