66个有趣的Python冷知识

  1. 装饰器的参数

    • 装饰器可以接受参数,返回一个新的装饰器。
  2. 计时上下文管理器

    • 可以使用 contextlib.contextmanager 创建一个计时器上下文管理器。
  3. 命名空间

    • dir() 可以列出当前命名空间中的所有名称。
  4. 内置函数

    • enumerate() 可以同时获取列表元素的索引和值。
  5. 任意迭代器

    • 迭代器协议由 __iter__()__next__() 方法定义。
  6. 生成器表达式

    • 生成器表达式使用括号而不是方括号,例如 (x*x for x in range(10))
  7. 上下文管理器装饰器

    • 使用 contextlib.contextmanager 可以将生成器函数转换为上下文管理器。
  8. 自定义异常

    • 可以通过继承 Exception 类定义自定义异常。
  9. 浮点数相等性

    • 由于浮点数精度问题,通常不直接比较相等性,而是使用 math.isclose()
  10. 字符串模板

    • string 模块的 Template 类提供了另一种字符串格式化方法。
  11. 命名参数

    • 可以使用命名参数传递给函数,例如 func(a=1, b=2)
  12. 函数对象属性

    • 函数是对象,可以有属性,例如 func.description = "This is a function"
  13. 多行注释

    • 可以使用多个单行注释来实现多行注释。
  14. 属性动态获取

    • getattr() 可以动态获取对象属性。
  15. 属性动态设置

    • setattr() 可以动态设置对象属性。
  16. 调用对象

    • 实现 __call__ 方法的对象可以像函数一样调用。
  17. 私有属性

    • 使用双下划线前缀定义私有属性,例如 self.__private.
  18. 运算符重载

    • 可以通过实现魔术方法重载运算符,例如 __add__, __sub__.
  19. 序列协议

    • 实现 __len____getitem__ 方法可以创建自定义序列。
  20. 上下文管理器协议

    • 实现 __enter____exit__ 方法创建自定义上下文管理器。
  21. 自定义容器

    • 实现 __contains__, __iter__, __len__ 方法创建自定义容器。
  22. 对象哈希

    • __hash__ 方法定义对象的哈希值。
  23. 字符串比较

    • __eq__, __lt__, __le__, __gt__, __ge__ 方法定义对象比较。
  24. 对象拷贝

    • 使用 copy 模块的 copy()deepcopy() 方法进行对象拷贝。
  25. 文件读写模式

    • open() 函数支持多种文件读写模式,例如 'r', 'w', 'a', 'b'.
  26. 带编码的文件

    • open() 函数支持指定文件编码,例如 open('file.txt', 'r', encoding='utf-8').
  27. 临时目录

    • tempfile.TemporaryDirectory 创建一个临时目录,在使用完毕后自动删除。
  28. 命令行输入

    • input() 函数可以读取命令行输入。
  29. 格式化字符串

    • 使用 f-string 可以在字符串中直接插入表达式值,例如 f"Value: {x}".
  30. 环境上下文

    • 使用 os.environ 可以访问和修改环境变量。
  31. 动态导入模块

    • 使用 importlib 模块可以动态导入模块。
  32. 日期运算

    • datetime.timedelta 提供了日期时间运算功能。
  33. 日历模块

    • calendar 模块提供了日历相关功能。
  34. 可调用对象

    • 实现 __call__ 方法的对象可以被调用。
  35. 类属性

    • 类属性在类定义时初始化,所有实例共享。
  36. 实例属性

    • 实例属性在实例初始化时定义,每个实例独立。
  37. 类方法

    • 使用 @classmethod 装饰器定义类方法。
  38. 私有方法

    • 使用双下划线前缀定义私有方法。
  39. 文档生成

    • pydoc 模块提供了生成文档的功能。
  40. 反射

    • 使用 inspect 模块可以反射对象信息。
  41. 单元测试发现

    • unittest 模块支持自动发现测试用例。
  42. 断言

    • unittest 提供了多种断言方法,例如 assertEqual, assertTrue.
  43. 随机样本

    • random.sample 从序列中随机抽取样本。
  44. 正态分布

    • random.gauss 生成正态分布随机数。
  45. 唯一标识

    • uuid 模块生成唯一标识符。
  46. 密码学

    • hashlib 模块提供了哈希算法。
  47. HMAC

    • hmac 模块提供了HMAC算法。
  48. 进程池

    • multiprocessing.Pool 提供了进程池功能。
  49. 线程池

    • concurrent.futures.ThreadPoolExecutor 提供了线程池功能。
  50. 生成器

    • 使用 yield 关键字定义生成器函数。
  51. 异步生成器

    • 使用 async defyield 定义异步生成器。
  52. 队列

    • queue.Queue 提供了线程安全的队列实现。
  53. 优先级队列

    • queue.PriorityQueue 提供了优先级队列。
  54. 双向队列

    • collections.deque 提供了双向队列。
  55. 计数器

    • collections.Counter 提供了计数器。
  56. 默认字典

    • collections.defaultdict 提供了带有默认值的字典。
  57. 有序字典

    • collections.OrderedDict 提供了有序字典。
  58. 数据类

    • 使用 dataclasses 模块可以定义数据类。
  59. 命名元组

    • collections.namedtuple 提供了命名元组。
  60. 函数缓存

    • functools.lru_cache 提供了函数缓存功能。
  61. 方法缓存

    • functools.cache_property 提供了属性缓存功能。
  62. 部分函数

    • functools.partial 提供了部分函数应用。
  63. 方法封装

    • functools.wraps 用于装饰器,保留原函数的元数据。
  64. 压缩数据

    • bz2, gzip, zipfile 模块提供了数据压缩功能。
  65. 消息队列

    • queue.Queue 提供了消息队列。
  66. 异步迭代器

    • 实现 __aiter____anext__ 方法定义异步迭代器。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部