刚入门Python时,代码写得"东一榔头西一棒子"?其实掌握这4个进阶基础知识点,就能让代码从"能跑"变"优雅",还不踩坑~ 全程干货+可直接复制的代码示例!
一、列表推导式:告别"循环刺客"
还在写冗长的for循环给列表赋值?列表推导式一行搞定,简洁又高效,可读性拉满~
核心技巧:
- 语法:
[表达式 for 变量 in 可迭代对象 if 条件] - 替代多层
for循环,减少代码行数 - 比普通循环执行速度更快
代码示例:
# 普通循环:生成10以内偶数的平方
even_squares = []
for num in range(10):
if num % 2 == 0:
even_squares.append(num **2)
print(even_squares) # 输出:[0, 4, 16, 36, 64]
# 列表推导式:一行实现
even_squares = [num** 2 for num in range(10) if num % 2 == 0]
print(even_squares) # 输出:[0, 4, 16, 36, 64]
二、字典/集合推导式:推导式全家桶用法
列表推导式玩明白了?字典和集合推导式同理,解决"键值对处理"和"去重"刚需~
代码示例:
# 字典推导式:将列表转为"值:索引"的字典
fruits = ["apple", "banana", "orange"]
fruit_index = {fruit: idx for idx, fruit in enumerate(fruits)}
print(fruit_index) # 输出:{'apple':0, 'banana':1, 'orange':2}
# 集合推导式:快速去重+处理数据
nums = [1, 2, 2, 3, 3, 3]
unique_squares = {num **2 for num in nums}
print(unique_squares) # 输出:{1, 4, 9}(自动去重)
三、装饰器:给函数"穿件外套"
想给函数加功能(比如计时、日志),又不想改原代码?装饰器就是干这个的,Python优雅编程的核心~
核心技巧:
- 本质是"函数嵌套+闭包"
- 用 @装饰器名 语法快速调用
- 不修改原函数代码,实现功能扩展
代码示例:
import time
# 定义装饰器:计算函数执行时间
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs) # 执行原函数
end_time = time.time()
print(f"{func.__name__}执行耗时:{end_time - start_time:.4f}秒")
return result
return wrapper
# 用@语法给函数加装饰器
@timer
def add(a, b):
time.sleep(0.5) # 模拟耗时操作
return a + b
# 调用函数(自动触发装饰器功能)
print(add(3, 5)) # 输出:add执行耗时:0.5002秒 → 8
四、with语句:文件操作"免操心"
还在手动 open() 和 close() 文件?漏写 close() 就报错?with语句自动管理资源,优雅又安全~
核心技巧:
- 语法: with open(文件路径, 模式) as f:
- 自动处理文件打开/关闭,即使报错也不会泄露资源
- 支持所有可上下文管理的对象(如数据库连接)
代码示例:
# 普通方式:容易漏写close()
f = open("test.txt", "w")
f.write("Hello Python!")
f.close() # 必须手动关闭,否则数据可能丢失
# with语句:自动关闭文件
with open("test.txt", "w") as f:
f.write("Hello 进阶Python!")
# 无需手动close(),退出with块自动关闭