Python:从"能用"到"会用"的4个骚操作(基础版)

41 阅读2分钟

刚入门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块自动关闭