
以下是一份针对Python初学者的50个小知识点集合,内容涵盖基础语法、实用技巧和20年版本更迭中的精华总结(基于Python 3.6+版本):
缩进即结构:Python用缩进代替大括号,4个空格是PEP8推荐标准。
if True:print("缩进是语法的一部分")
动态类型:变量无需声明类型,赋值即定义。
x = 10 # 自动识别为intx = "Hello" # 自动变为str
字符串乘法:用*重复字符串。
print("Ha" * 3) # 输出HaHaHa
三引号跨行字符串:保留格式的多行文本。
text = """第一行第二行"""
列表切片:list[start:end:step],支持负数索引。
nums = [0,1,2,3,4]print(nums[1:4]) # [1,2,3]print(nums[::-1]) # 逆序
列表推导式:快速生成列表。
squares = [x**2 for x in range(10)]
交换变量:无需中间变量。
a, b = 1, 2a, b = b, a
链式比较:数学式写法。
if 1 < x < 10:print("链式比较成立")
enumerate迭代索引:同时获取索引和值。
for i, value in enumerate(['a','b','c']):print(i, value)
zip合并迭代器:并行遍历多个序列。
names = ["Alice", "Bob"]ages = [25, 30]for name, age in zip(names, ages):print(name, age)
默认参数陷阱:避免使用可变对象作为默认参数。
# 错误示例def func(a, lst=[]):lst.append(a)return lst# 正确做法def func(a, lst=None):lst = lst or []lst.append(a)return lst
可变参数*args和`kwargs`**:
def example(a, *args, **kwargs):print(a, args, kwargs)example(1, 2, 3, name="John")
Lambda匿名函数:简单函数单行实现。
multiply = lambda x, y: x * y
闭包与作用域:函数捕获外部变量。
def outer():x = 10def inner():print(x) # 访问外部变量return inner
字典快速合并:Python 3.5+的**语法。
dict1 = {'a':1}dict2 = {'b':2}merged = {**dict1, **dict2}
集合去重:利用集合特性过滤重复项。
unique = list(set([1,2,2,3])) # [1,2,3]
默认字典defaultdict:处理缺失键。
from collections import defaultdictdd = defaultdict(list)dd['key'].append(1) # 自动初始化空列表
元组拆包:多变量赋值更简洁。
point = (3, 4)x, y = point
with自动关闭文件:防止资源泄露。
with open('file.txt', 'r') as f:content = f.read()
读写JSON数据:
import jsondata = {'name': 'John'}# 写入with open('data.json', 'w') as f:json.dump(data, f)# 读取with open('data.json', 'r') as f:data = json.load(f)
捕获特定异常:避免裸except。
try:1 / 0except ZeroDivisionError as e:print(f"Error: {e}")
else子句:try中没有异常时执行。
try:result = 10 / 2except:print("Error")else:print("结果是", result)
finally清理资源:无论是否异常都执行。
try:file = open('test.txt')finally:file.close()
__name__的作用:模块作为脚本或导入时区别运行。
if __name__ == '__main__':print('直接执行时运行')
安装第三方库:使用pip。
pip install requests
虚拟环境venv:隔离项目依赖。
python -m venv myenvsource myenv/bin/activate # Linux/Macmyenv\Scripts\activate.bat # Windows
循环中的else:循环未被break打断时执行。
for i in range(5):if i == 10:breakelse:print("循环正常结束")
解压序列赋值:批量赋值给多个变量。
a, *b, c = [1,2,3,4] # a=1, b=[2,3], c=4
海象运算符:=(Python 3.8+):表达式内赋值。
if (n := len([1,2,3])) > 2:print(n)
f-string格式化:更简洁的字符串插值(Python 3.6+)。
name = "Alice"print(f"Hello {name}!")
(x for x in range(10))is与==的区别:is比较对象ID,==比较值。copy.copy() vs copy.deepcopy()
def decorator(func):def wrapper():print("Before")func()print("After")return wrapper@decoratordef say_hello():print("Hello")
def greet(name: str) -> str:return f"Hello {name}"
+=拼接字符串:使用str.join()提高效率。in检查成员存在性:if key in dict比遍历快。sys模块查看递归深度:默认限制1000层。
import sysprint(sys.getrecursionlimit())
pdb调试器:命令行调试工具。
import pdb; pdb.set_trace()
timeit模块计算代码执行时间。
import randomprint(random.randint(1,10)) # 1-10随机整数
sys.argv获取。
import sysprint("脚本名:", sys.argv[0])
new_list = old_list[::-1]dict.keys()返回动态视图。print函数和除法行为。/是浮点除,//是整除。@矩阵乘法符:Python 3.5+新增运算符。async/await语法:Python 3.5+支持协程。dataclass:Python 3.7+简化类定义。
from dataclasses import dataclass@dataclassclass Point:x: inty: int
这些知识点从基础到进阶,覆盖了Python编程的核心概念和实用技巧,帮助新手避开常见陷阱,写出更优雅高效的代码。配合实践练习效果更佳!