以下是一份针对Python初学者的50个小知识点集合,内容涵盖基础语法、实用技巧和20年版本更迭中的精华总结(基于Python 3.6+版本):
缩进即结构:Python用缩进代替大括号,4个空格是PEP8推荐标准。
if True:
print("缩进是语法的一部分")
动态类型:变量无需声明类型,赋值即定义。
x = 10 # 自动识别为int
x = "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, 2
a, 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 = 10
def 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 defaultdict
dd = 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 json
data = {'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 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")
else
子句:try中没有异常时执行。
try:
result = 10 / 2
except:
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 myenv
source myenv/bin/activate # Linux/Mac
myenv\Scripts\activate.bat # Windows
循环中的else
:循环未被break
打断时执行。
for i in range(5):
if i == 10:
break
else:
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
@decorator
def say_hello():
print("Hello")
def greet(name: str) -> str:
return f"Hello {name}"
+=
拼接字符串:使用str.join()
提高效率。in
检查成员存在性:if key in dict
比遍历快。sys
模块查看递归深度:默认限制1000层。
import sys
print(sys.getrecursionlimit())
pdb
调试器:命令行调试工具。
import pdb; pdb.set_trace()
timeit
模块计算代码执行时间。
import random
print(random.randint(1,10)) # 1-10随机整数
sys.argv
获取。
import sys
print("脚本名:", 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
@dataclass
class Point:
x: int
y: int
这些知识点从基础到进阶,覆盖了Python编程的核心概念和实用技巧,帮助新手避开常见陷阱,写出更优雅高效的代码。配合实践练习效果更佳!