4.Python 3 进阶特性总结:迭代器、生成器、数据结构、装饰器与 Lambda

163 阅读4分钟

引言

Python 是一门功能强大且灵活的语言,除了基础语法外,它还提供了许多高级特性,如迭代器、生成器、数据结构、装饰器和 Lambda 表达式。这些特性不仅能让代码更简洁高效,还能解决许多复杂的问题。本文将对这些特性进行总结,并通过代码示例帮助大家更好地理解。


1. 迭代器与生成器

1.1 迭代器(Iterator)

迭代器是 Python 中用于遍历集合的对象。任何实现了 __iter__()__next__() 方法的对象都是迭代器。

特点:

  • 惰性计算:只在需要时生成数据,节省内存。
  • 只能向前遍历,不能回退。

示例:

# 自定义迭代器
class MyIterator:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current < self.end:
            self.current += 1
            return self.current - 1
        else:
            raise StopIteration

# 使用迭代器
my_iter = MyIterator(1, 5)
for num in my_iter:
    print(num)  # 输出 1, 2, 3, 4

1.2 生成器(Generator)

生成器是一种特殊的迭代器,使用 yield 关键字实现。生成器函数在每次调用 yield 时暂停执行,并返回一个值。

特点:

  • 更简洁的语法。
  • 自动实现 __iter__()__next__() 方法。

示例:

# 生成器函数
def my_generator(start, end):
    current = start
    while current < end:
        yield current
        current += 1

# 使用生成器
gen = my_generator(1, 5)
for num in gen:
    print(num)  # 输出 1, 2, 3, 4

2. 数据结构

Python 提供了多种内置数据结构,如列表、元组、字典、集合等。此外,还可以通过 collections 模块使用更高级的数据结构。

2.1 列表(List)

  • 有序、可变、可重复。
  • 常用操作:append()extend()insert()remove()

2.2 元组(Tuple)

  • 有序、不可变、可重复。
  • 常用于存储不可修改的数据。

2.3 字典(Dict)

  • 键值对集合,键唯一。
  • 常用操作:keys()values()items()

2.4 集合(Set)

  • 无序、不重复。
  • 常用操作:add()remove()union()intersection()

2.5 高级数据结构

  • collections.deque:双端队列,支持高效的头尾操作。
  • collections.defaultdict:带默认值的字典。
  • collections.Counter:计数器,用于统计元素出现次数。

示例:

from collections import deque, defaultdict, Counter

# 双端队列
dq = deque([1, 2, 3])
dq.appendleft(0)  # 添加到左侧
print(dq)  # 输出 deque([0, 1, 2, 3])

# 默认字典
dd = defaultdict(int)
dd['a'] += 1
print(dd['a'])  # 输出 1

# 计数器
cnt = Counter(['a', 'b', 'a', 'c'])
print(cnt)  # 输出 Counter({'a': 2, 'b': 1, 'c': 1})

3. 装饰器(Decorator)

装饰器是一种用于修改函数或类行为的工具。它本质上是一个高阶函数,接受一个函数作为参数并返回一个新的函数。

特点:

  • 不修改原函数代码,增强函数功能。
  • 常用于日志记录、权限校验、性能测试等场景。

示例:

# 定义一个装饰器
def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("函数执行前")
        result = func(*args, **kwargs)
        print("函数执行后")
        return result
    return wrapper

# 使用装饰器
@my_decorator
def say_hello(name):
    print(f"Hello, {name}!")

say_hello("Alice")
# 输出:
# 函数执行前
# Hello, Alice!
# 函数执行后

4. Lambda 表达式

Lambda 是一种匿名函数,用于定义简单的单行函数。

特点:

  • 语法简洁。
  • 适合用于需要函数作为参数的场景,如 map()filter()

示例:

# 普通函数
def add(x, y):
    return x + y

# Lambda 表达式
add_lambda = lambda x, y: x + y

print(add(3, 5))        # 输出 8
print(add_lambda(3, 5)) # 输出 8

# 结合 map 使用
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x ** 2, numbers))
print(squared)  # 输出 [1, 4, 9, 16]

5. 总结

本文总结了 Python 中的一些高级特性,包括迭代器、生成器、数据结构、装饰器和 Lambda 表达式。这些特性不仅能让代码更简洁高效,还能解决许多复杂的问题。以下是本文的要点回顾:

  1. 迭代器与生成器:用于惰性计算和高效遍历。
  2. 数据结构:Python 提供了丰富的内置数据结构,还可以通过 collections 模块使用更高级的结构。
  3. 装饰器:用于增强函数功能,不修改原函数代码。
  4. Lambda 表达式:用于定义简单的匿名函数。

掌握这些特性后,你的 Python 编程能力将更上一层楼。接下来,可以尝试将这些特性应用到实际项目中,进一步提升代码质量和开发效率。


参考资料: