Python:从"入门菜鸟"到"有点东西"的5个基础神技

47 阅读3分钟

刚搞定Python基础语法,写代码还在"循规蹈矩"?这5个进阶基础知识点,让你告别冗余代码,效率翻倍!全程干货+可直接复制的代码示例,新手也能轻松拿捏~

一、闭包:函数里的"隐藏小仓库"

闭包就是"函数嵌套+内部函数引用外部变量",能实现数据封装,不用全局变量也能存状态~

核心技巧:

  • 外层函数返回内层函数(不是调用结果)
  • 内层函数引用外层函数的局部变量
  • 保持变量状态,避免全局污染

代码示例:计数器功能

  
def counter():
    count = 0  # 外层函数变量,被内层引用
    def add():
        nonlocal count  # 声明使用外层局部变量
        count += 1
        return count
    return add  # 返回内层函数对象

# 使用闭包
num_count = counter()
print(num_count())  # 输出:1
print(num_count())  # 输出:2
print(num_count())  # 输出:3

 

二、生成器:告别"内存刺客"

还在用电列表存海量数据?生成器按需生成数据,占用内存极少,循环时才计算下一个值~

核心技巧:

  • 用 yield 关键字替代 return 
  • 每次调用 next() 或循环时,暂停在 yield 处
  • 适合处理大数据量、无限序列

代码示例:生成斐波那契数列

# 生成器函数
def fib_generator(n):
    a, b = 0, 1
    for _ in range(n):
        yield a  # 暂停并返回当前值
        a, b = b, a + b

# 遍历生成器(按需生成,不占内存)
for num in fib_generator(10):
    print(num, end=" ")  # 输出:0 1 1 2 3 5 8 13 21 34

 

三、迭代器:让对象"可循环"的魔法

迭代器是实现了 __iter__() 和 __next__() 方法的对象,列表、字典等可迭代对象的底层原理~

核心技巧:

  •  iter() 函数获取迭代器对象
  •  next() 函数获取下一个元素,耗尽抛出 StopIteration 
  • 自定义迭代器实现个性化循环逻辑

代码示例:自定义迭代器(遍历1~n)

class MyIterator:
    def __init__(self, n):
        self.n = n
        self.current = 1

    def __iter__(self):
        return self  # 返回自身

    def __next__(self):
        if self.current > self.n:
            raise StopIteration  # 迭代终止条件
        temp = self.current
        self.current += 1
        return temp

# 使用自定义迭代器
for num in MyIterator(5):
    print(num, end=" ")  # 输出:1 2 3 4 5

 

四、模块与包:代码"分家"更优雅

写的代码越来越多?用模块(.py文件)和包(文件夹+init.py)拆分功能,复用性拉满~

核心技巧:

  • 模块:单个.py文件,用 import 模块名 导入
  • 包:多个模块组成的文件夹,需包含 __init__.py 
  • 用 from ... import ... 精准导入,避免命名冲突

代码示例:

1. 模块使用(假设创建了utils.py)

# utils.py(模块文件)
def add(a, b):
    return a + b

def multiply(a, b):
    return a * b

 

2. 导入并使用模块

# main.py
import utils  # 导入整个模块
from utils import multiply  # 精准导入单个函数

print(utils.add(2, 3))      # 输出:5
print(multiply(2, 3))       # 输出:6

 

五、异常处理:让程序"抗造"不崩溃

新手写代码最怕报错就闪退?异常处理能捕获错误,让程序优雅降级~

核心技巧:

  •  try-except 捕获指定异常
  •  else :无异常时执行
  •  finally :无论是否异常都执行(如关闭文件)

代码示例:文件读取异常处理

try:
    with open("test.txt", "r") as f:
        content = f.read()
except FileNotFoundError:
    print("错误:文件不存在!")
except Exception as e:
    print(f"未知错误:{e}")
else:
    print("文件读取成功:", content)
finally:
    print("操作结束(无论成功与否都会执行)")

 

总结

这5个知识点是Python进阶的"地基"——闭包实现数据封装,生成器节省内存,迭代器理解循环本质,模块包优化代码结构,异常处理提升程序稳定性。练熟这些,代码会更规范、更抗造~