66个有趣的Python冷知识
-  一行反转列表 - 使用切片一行反转列表:reversed_list = my_list[::-1]
 
- 使用切片一行反转列表:
-  统计文件单词数量 - 使用 collections.Counter统计文件中每个单词的数量:from collections import Counter; with open('file.txt') as f: word_count = Counter(f.read().split())
 
- 使用 
-  生成斐波那契数列 - 一行生成斐波那契数列:fibonacci = lambda n: n if n <= 1 else fibonacci(n-1) + fibonacci(n-2)
 
- 一行生成斐波那契数列:
-  Python之禅 - 在Python解释器中输入 import this会显示Python之禅。
 
- 在Python解释器中输入 
-  检查对象类型 - 使用 isinstance()检查对象类型:is_instance = isinstance(123, int)
 
- 使用 
-  命名元组字段 - collections.namedtuple创建的命名元组可以用点号访问字段:- Point = namedtuple('Point', 'x y'); p = Point(1, 2); print(p.x, p.y)
 
-  字符串多行拼接 - 使用括号自动拼接多行字符串:long_string = ("This is a very long string " "that spans multiple lines " "but is still considered one string.")
 
- 使用括号自动拼接多行字符串:
-  多次装饰器 - 一个函数可以被多个装饰器装饰:@decorator1 @decorator2 def func(): pass
 
- 一个函数可以被多个装饰器装饰:
-  深拷贝 - 使用 copy模块进行深拷贝:import copy; deep_copied_list = copy.deepcopy(original_list)
 
- 使用 
-  反向字符串 - 使用 ''.join(reversed(string))反转字符串:reversed_string = ''.join(reversed('hello'))
 
- 使用 
-  正则表达式搜索 - 使用 re.search()搜索正则表达式:import re; match = re.search(r'\d+', 'abc123')
 
- 使用 
-  自定义异常处理 - 自定义异常处理可以提供更详细的信息:class CustomError(Exception): pass; raise CustomError("An error occurred")
 
- 自定义异常处理可以提供更详细的信息:
-  捕获多种异常 - 使用元组捕获多种异常:try: ... except (TypeError, ValueError) as e: ...
 
- 使用元组捕获多种异常:
-  复数运算 - Python内置支持复数运算:z = (1 + 2j) * (3 + 4j)
 
- Python内置支持复数运算:
-  压缩和解压文件 - 使用 shutil模块压缩和解压文件:import shutil; shutil.make_archive('archive', 'zip', 'directory_path'); shutil.unpack_archive('archive.zip')
 
- 使用 
-  执行多行代码 - 使用 exec()执行多行代码:exec("a = 1\nb = 2\nprint(a + b)")
 
- 使用 
-  检查对象是否可调用 - 使用 callable()检查对象是否可调用:is_callable = callable(print)
 
- 使用 
-  字典推导式 - 使用字典推导式创建字典:squared_dict = {x: x*x for x in range(10)}
 
- 使用字典推导式创建字典:
-  列表嵌套解析 - 列表嵌套解析生成平坦列表:flat_list = [item for sublist in nested_list for item in sublist]
 
- 列表嵌套解析生成平坦列表:
-  元素频率计数 - 使用 collections.Counter统计元素频率:from collections import Counter; freq = Counter(my_list)
 
- 使用 
-  类型注解 - 使用类型注解提高代码可读性:def greet(name: str) -> str: return 'Hello ' + name
 
- 使用类型注解提高代码可读性:
-  枚举类型 - 使用 Enum创建枚举类型:from enum import Enum; class Color(Enum): RED = 1; GREEN = 2; BLUE = 3
 
- 使用 
-  上下文管理器 - 自定义上下文管理器:class MyContext: def __enter__(self): ...; def __exit__(self, exc_type, exc_val, exc_tb): ...
 
- 自定义上下文管理器:
-  性能计时器 - 使用 timeit模块测量代码性能:import timeit; exec_time = timeit.timeit('sum(range(1000))', number=1000)
 
- 使用 
-  多线程编程 - 使用 threading模块实现多线程:import threading; t = threading.Thread(target=func); t.start()
 
- 使用 
-  多进程编程 - 使用 multiprocessing模块实现多进程:import multiprocessing; p = multiprocessing.Process(target=func); p.start()
 
- 使用 
-  内置迭代器 - 使用 iter()和next()创建自定义迭代器:iterator = iter([1, 2, 3]); next(iterator)
 
- 使用 
-  自定义装饰器 - 使用 functools.wraps保留原函数元数据:import functools; def decorator(func): @functools.wraps(func) def wrapper(*args, **kwargs): ...
 
- 使用 
-  检查对象大小 - 使用 sys.getsizeof()检查对象占用的内存大小:import sys; size = sys.getsizeof(my_object)
 
- 使用 
-  内存视图对象 - 使用 memoryview操作二进制数据:data = memoryview(b'abc')
 
- 使用 
-  命令行参数解析 - 使用 argparse模块解析命令行参数:import argparse; parser = argparse.ArgumentParser(); parser.add_argument('--arg'); args = parser.parse_args()
 
- 使用 
-  生成器表达式 - 使用生成器表达式节省内存:gen = (x*x for x in range(10))
 
- 使用生成器表达式节省内存:
-  无序集合 - 使用 frozenset创建不可变集合:fs = frozenset([1, 2, 3])
 
- 使用 
-  字符串模板 - 使用 string.Template进行字符串模板替换:from string import Template; t = Template('$who likes $what'); s = t.substitute(who='tim', what='kung pao')
 
- 使用 
-  对象属性访问 - 使用 getattr()动态访问对象属性:value = getattr(obj, 'attribute')
 
- 使用 
-  动态设置属性 - 使用 setattr()动态设置对象属性:setattr(obj, 'attribute', value)
 
- 使用 
-  删除对象属性 - 使用 delattr()删除对象属性:delattr(obj, 'attribute')
 
- 使用 
-  路径是否绝对 - 使用 os.path.isabs()检查路径是否绝对路径:import os; is_abs = os.path.isabs('/path/to/file')
 
- 使用 
-  获取文件扩展名 - 使用 os.path.splitext()获取文件扩展名:import os; ext = os.path.splitext('file.txt')[1]
 
- 使用 
-  行迭代文件 - 使用 fileinput模块逐行迭代文件:import fileinput; for line in fileinput.input('file.txt'):
 
- 使用 
-  压缩数据 - 使用 zlib模块压缩数据:import zlib; compressed = zlib.compress(b'data')
 
- 使用 
-  解压数据 - 使用 zlib模块解压数据:import zlib; decompressed = zlib.decompress(compressed)
 
- 使用 
-  计算CRC32 - 使用 zlib.crc32()计算CRC32校验和:import zlib; crc = zlib.crc32(b'data')
 
- 使用 
-  哈希对象 - 使用 hashlib模块计算哈希值:import hashlib; hash_obj = hashlib.sha256(b'data'); hash_hex = hash_obj.hexdigest()
 
- 使用 
-  生成随机密码 - 使用 secrets模块生成安全随机密码:import secrets; password = secrets.token_urlsafe(16)
 
- 使用 
-  生成随机整数 - 使用 secrets.randbelow()生成安全随机整数:import secrets; number = secrets.randbelow(100)
 
- 使用 
-  UUID生成 - 使用 uuid模块生成唯一标识符:import uuid; unique_id = uuid.uuid4()
 
- 使用 
-  双端队列 - 使用 collections.deque实现高效的双端队列操作:from collections import deque; d = deque([1, 2, 3]); d.appendleft(0); d.append(4)
 
- 使用 
-  序列化对象 - 使用 pickle模块序列化对象:import pickle; serialized = pickle.dumps(obj)
 
- 使用 
-  反序列化对象 - 使用 pickle模块反序列化对象:import pickle; obj = pickle.loads(serialized)
 
- 使用 
-  深拷贝对象 - 使用 copy.deepcopy()进行深拷贝:import copy; new_obj = copy.deepcopy(old_obj)
 
- 使用 
-  按位取反 - 使用 ~运算符进行按位取反:inverted = ~value
 
- 使用 
-  按位与 - 使用 &运算符进行按位与:result = value1 & value2
 
- 使用 
-  按位或 - 使用 |运算符进行按位或:result = value1 | value2
 
- 使用 
-  按位异或 - 使用 ^运算符进行按位异或:result = value1 ^ value2
 
- 使用 
-  位左移 - 使用 <<运算符进行位左移:shifted = value << 2
 
- 使用 
-  位右移 - 使用 >>运算符进行位右移:shifted = value >> 2
 
- 使用 
-  高精度浮点数 - 使用 decimal.Decimal进行高精度浮点数运算:from decimal import Decimal; high_precision = Decimal('0.1') + Decimal('0.2')
 
- 使用 
-  操作日期 - 使用 datetime.timedelta操作日期:from datetime import datetime, timedelta; tomorrow = datetime.now() + timedelta(days=1)
 
- 使用 
-  获取日期差 - 使用 datetime.date获取日期差:from datetime import date; delta = date(2022, 1, 1) - date(2021, 1, 1)
 
- 使用 
-  生成随机日期 - 使用 random.randint()生成随机日期:import random; from datetime import datetime, timedelta; random_date = datetime.now() + timedelta(days=random.randint(0, 365))
 
- 使用 
-  同步队列 - 使用 queue.Queue实现线程安全的同步队列:import queue; q = queue.Queue(); q.put(item); item = q.get()
 
- 使用 
-  优先级队列 - 使用 queue.PriorityQueue实现优先级队列:import queue; pq = queue.PriorityQueue(); pq.put((priority, item)); item = pq.get()
 
- 使用 
-  定时器 - 使用 threading.Timer实现定时器:import threading; t = threading.Timer(5.0, func); t.start()
 
- 使用 
-  记录程序运行日志 - 使用 logging模块记录程序运行日志:import logging; logging.basicConfig(level=logging.INFO); logging.info('This is an info message')
 
- 使用 
-  模块缓存 - Python会缓存导入的模块,可以通过 sys.modules查看缓存的模块:import sys; cached_modules = sys.modules
 
- Python会缓存导入的模块,可以通过