Python函数默认参数与数据结构技巧

需积分: 49 20 下载量 84 浏览量 更新于2024-08-08 收藏 2.01MB PDF 举报
"《Python Cookbook》第三版,由熊能翻译,发布于2017年12月9日,是一本关于Python编程的数据结构、算法、字符串和文本处理、数字日期和时间等内容的实战指南。书中涵盖了各种编程技巧和解决方案,旨在提升Python程序员的技能和效率。" 在Python编程中,定义有默认参数的函数是一种常见的做法,它允许函数在调用时可以不提供所有参数,未提供的参数将采用预先设定的默认值。例如,在描述中提到的`spam`函数,其第二个参数`b`默认值为42,如果不提供`b`的值,它将自动取42。这是通过在函数定义时给参数赋默认值来实现的: ```python def spam(a, b=42): print(a, b) ``` 调用`spam(1)`会打印`1 42`,因为`b`使用了默认值;而`spam(1, 2)`会打印`1 2`,因为`b`被显式地赋予了新值。 然而,需要注意的是,默认参数值应当是不可变的,因为如果默认值是一个可变对象(如列表、集合或字典),函数可能会在不同调用间保留状态,这通常不是预期的行为。例如,将列表作为默认值: ```python def spam(a, b=None): if b is None: b = [] # ... ``` 在这个例子中,如果`b`未被赋值,函数内部会创建一个新的空列表,避免了因多次调用函数而导致的共享状态问题。 书中还介绍了Python编程中其他诸多实用技巧,包括但不限于: 1. 数据结构的处理,如解压序列赋值给多个变量、保留最后N个元素、查找最大或最小的N个元素等; 2. 优先级队列的实现,适用于需要按优先级处理任务的场景; 3. 字典的操作,如映射多个值、排序、查找共同项、删除序列中的重复元素等; 4. 序列和字典的排序、分组和过滤; 5. 字符串操作,如多界定符分割、匹配、替换、忽略大小写匹配、Unicode处理等; 6. 数字和日期的处理,包括数字的四舍五入、浮点数运算、格式化输出、整数的二进制和十六进制转换、复数运算以及处理无穷大和NaN等。 这些内容覆盖了Python编程的广泛领域,对于提升编程技能和解决实际问题有着重要的参考价值。