云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

python学习教程-第七节内容(python第七章课后答案)

jxf315 2025-07-27 21:24:16 教程文章 1 ℃

函数(重点)

基本概念

Python 函数的语法是编程中的核心概念之一,它允许你将代码块封装为可重复调用的单元。

基本语法

定义函数:

示例

参数类型

位置参数(Positional Arguments)

按参数定义的顺序传递值

关键字参数(Keyword Arguments)

通过参数名指定值,顺序无关。

默认参数(Default Arguments)

参数可设置默认值,调用时可省略。

可变参数(args)

接收任意数量的位置参数,存储为元组

使用*符号去声明

关键字可变参数(kwargs)

接收任意数量的关键字参数存储为字典

使用**去声明

基本概念

Python 关键字参数是指在函数调用时通过参数名指定值的方式

返回值

单返回值

多返回值(返回元组)

作用域

局部变量

函数内部定义的变量

全局变量

函数外部定义的变量,需用 global 关键字修改

非局部变量

嵌套函数中,用 nonlocal 修改外层函数变量

示例

Lambda函数

匿名函数,用于简单操作,语法:lambda 参数: 表达式

函数的嵌套与闭包

嵌套函数

函数内部定义另一个函数

闭包

内部函数引用外部函数的变量,即使外部函数已执行完毕。

特点

1、数据封装: 变量被"封闭"在函数内部。

2、状态保持: 每次调用都记住上次的状态

3、独立实例: 每个闭包都有自己的变量副本

应用场景

1、装饰器

输出结果:

2、配置函数

3、计数器和状态保持

函数调用和函数对象的区别

基本概念

区别

函数对象

1、不使用 ()

2、得到函数本身,不执行

3、可以赋值、传递、存储

函数调用

1、使用 ()

2、执行函数代码

3、返回函数结果

实际应用

总结

函数对象:func - 引用函数

函数调用:func() - 执行函数

这是 Python 中一等函数概念的基础,函数既可以作为数据传递,也可以作为可调用对象执行。

函数注解

基本概念

函数注解是 Python 3.0 引入的一项功能,它允许开发者向函数参数和返回值添加任意的元数据(metadata)。这些注解不会影响程序的执行,但可以用于文档、类型检查或其他工具。

基本语法

函数注解的语法是在参数名或返回值后添加冒号和表达式

函数返回值类型注解的语法

def function_name(parameters) -> return_type:

关键要素:

-> 是返回值类型注解的标志符号

return_type 是期望的返回值类型

冒号 : 结束函数签名

重要语法规则:

1、位置固定:-> 必须在参数列表的 ) 之后,函数体的 : 之前。

2、可选性:返回值类型注解是完全可选的,不影响函数执行

3、不强制检查:Python运行时不会验证返回值是否符合注解。

4、向前引用:如果返回类型是当前定义的类,需要用字符串形式:-> 'ClassName'

示例

name: str 表示参数 name 期望是字符串类型

age: int 表示参数 age 期望是整数类型

-> str 表示函数返回值期望是字符串类型

注解的访问

所有注解信息存储在函数的 __annotations__ 属性中:

用途

1、类型提示

虽然 Python 是动态类型语言,但注解常被用于类型提示

2、文档补充

注解可以作为函数文档的补充说明

3、参数验证

可以结合装饰器实现参数验证

可选类型提示,增强代码可读性(Python 3.5+)

一等函数

基本概念

指函数在编程语言中可以像其他数据类型一样被处理。函数可以

赋值给变量

作为参数传递给其他函数

作为返回值返回

存储在数据结构中

简单示例

核心思想

函数不仅仅是代码块,它们本身就是对象,可以像整数、字符串一样被操作。这使得Python支持函数式编程范式,可以写出更灵活、更简洁的代码。

总结

这种特性让Python能够实现装饰器、高阶函数、回调函数等高级编程模式。

注意事项

1、默认参数避免使用可变对象

2、参数顺序

顺序必须为:位置参数 → 默认参数 → *args → **kwargs

示例:

def func(a, b=0, *args, **kwargs)。

递归函数

基本概念

函数直接或间接调用自身。

核心要素

1、基线条件(Base Case):终止递归的条件,避免无限循环。

2、递归条件(Recursive Case):将问题拆解为更小的同类子问题,并调用自身解决。

基本结构

经典示例代码

计算阶乘(n!)

公式:n! = n × (n-1)!,且0! = 1, 1! = 1。

优点

1、代码简洁,逻辑清晰

2、适合处理分治、树形结构问题

3、易于实现数学归纳法类问题

缺点

1、可能产生大量重复计算(如斐波那契)

2、栈溢出风险(Python默认递归深度约1000)

3、效率可能低于迭代方法

递归的优化方法

1、记忆化

缓存已计算结果,避免重复计算。

2、尾递归优化

将递归转换为循环(Python未原生支持,需手动实现)

实际应用场景

1、树形结构遍历(如二叉树、文件系统)

2、分治算法

如归并排序

注意事项

1、递归深度限制

(1)Python默认递归深度约为1000,可通过sys.setrecursionlimit(1500)调整,但不推荐。

(2)深度递归建议改用迭代或尾递归优化

2、基线条件必须可达

确保每次递归调用都向基线条件靠近,避免无限递归

切片

基本概念

切片用于从序列(如列表、元组、字符串)中提取子序列

语法

sequence[start:stop:step]

start:起始索引(包含),默认为0。

stop:结束索引(不包含),默认为序列末尾。

step:步长(正数从左到右,负数从右到左),默认为1

参数详解

1、正索引与负索引

正索引:从0开始,左到右。

负索引:从-1开始,右到左。

2、参数规则

(1)若省略 start,从序列头部开始。

(2)若省略 stop,到序列尾部结束。

(3)若 step 为负,反向切片(需 start > stop)。

(4)索引越界时自动取有效范围

示例代码

1、基本切片

# 全部元素,步长为2

nums[::2]

2、负索引切片

3、步长控制

高级用法

1、切片赋值

通过切片修改原序列内容

2、字符串切片

3、元组切片

注意事项

1、左闭右开区间

sequence[a:b] 包含 a,不包含 b。

2、步长为负时的索引方向

需确保 start > stop

3、生成新对象

切片操作不会修改原序列,而是生成新对象

4、越界处理

索引超出范围时自动截断到有效值

核心意义

1、简化数据操作

通过一行代码直接提取或修改序列的特定部分,避免手动循环遍历

2、内存高效

切片操作生成的是原序列的浅拷贝(新对象),但不会复制所有底层数据,适合处理大型数据集

3、灵活控制范围

支持正/负索引、步长(step)、动态调整起点/终点,适应复杂需求

4、统一语法

适用于所有序列类型(列表、字符串、元组、字节数组等)。

应用场景

1、数据截取与提取

快速获取序列的局部数据

2、从头或到尾的切片

3、使用步长间隔取值

4、序列反转

迭代

基本概念

在 Python 中,迭代(Iteration) 是一种按顺序访问集合元素(如列表、字典、字符串等)的机制,允许你逐个处理数据而无需手动管理索引。迭代是 Python 的核心概念之一,广泛应用于循环、生成器和数据处理中

常见类型

实现方式

1、使用for循环

输出:

2、手动控制迭代器(Iterator)

迭代器(Iterator)实际执行迭代的对象,通过 iter() 和 next() 操作

__iter__():返回迭代器自身。

__next__():返回下一个元素,无元素时抛出 StopIteration。

可迭代对象 vs 迭代器

注意事项

1、迭代器只能遍历一次

2、避免修改正在迭代的集合

3、惰性求值:生成器迭代器在需要时才计算值,节省内存

列表生成式

基本概念

列表生成式是 Python 中一种简洁高效的创建列表的方式,它可以用一行代码代替多行循环语句来生成列表

语法

[expression for item in iterable]

这是最简单的列表生成式形式,等价于:

示例

1、生成平方数列表

带条件的列表生成式

可以在生成式中添加条件判断

[expression for item in iterable if condition]

示例

1、筛选偶数平方

2、多重条件

嵌套循环的列表生成式

可以在一个列表生成式中使用多个for循环

示例

1、矩阵展平

带if-else的表达式

可以在表达式中使用条件表达式

示例

1、将奇数变为负数

最近发表
标签列表