百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

python学习教程-第七节内容

itomcoil 2025-08-05 18:55 2 浏览

函数(重点)

基本概念

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、将奇数变为负数

相关推荐

python学习教程-第七节内容

函数(重点)基本概念Python函数的语法是编程中的核心概念之一,它允许你将代码块封装为可重复调用的单元。基本语法定义函数:示例参数类型位置参数(PositionalArguments)按参数定义...

Python排序90%人只会用sorted()?这7个高阶技巧让你代码效率翻倍

高效处理数据的关键,往往从掌握排序开始。排序操作在Python编程中的重要性常被低估——直到你面对一个杂乱无章的数据集。作为数据处理的核心操作之一,排序效率直接决定了程序性能和代码可读性。无论你正在清...

第四章:Python函数

4.1函数的定义与调用4.1.1理论知识函数是组织好的、可重复使用的代码块,用于执行特定的任务。它可以提高代码的复用性和可维护性。在Python中,定义函数使用def关键字,其基本语法如下:def...

ArcGIS 一个独立运行的Python程序编写和打包

写代码#coding=utf8#-*-coding:UTF-8-*-importarcpyfromarcpyimportenvimportosimportsys##########...

python入门到脱坑经典案例—计算三角形的面积

下面为大家详细讲解如何用Python计算三角形面积。我们会从最基础的数学公式开始,逐步深入编程实现,并涵盖多个实用版本。以下是完整的教学指南:1.数学原理回顾三角形面积公式:面积=(底边长度...

Python运算技巧:10种计算列表平方的高效方法

1.使用for循环此方法遍历列表中的每个数字,使用**运算符计算其平方,然后将结果添加到新的列表中。2.使用列表推导式此方法使用列表推导式,这是一种更简洁的方式,可以在现有列表的每个项目上执行操作...

墙裂推荐,5个学习Python编程最佳的开源库

学习Python少不了的就是项目,我在GitHUB上找了几个比较好的开源库,大家可以跟着去学习。1、learn-python3这个存储库一共有19本Jupyter笔记本。它涵盖了字符串和条件之类的基础...

使用Python玩转ftplib库:实现ftp文件传输自动化全攻略

大家好!在日常工作中都会使用到ftp功能,用于上传和下载文件等,本章主要介绍Python的标准库ftplib来实现FTP文件传输,帮助我们实现ftp自动化。一、ftplib库核心函数速查表1连接与登...

Python零基础入门学习23:常用第三方库之图像处理库Pillow

注:本文所有代码均经过Python3.7实际运行检验,保证其严谨性。本文约2000字,阅读时间约为4分钟。Pillow库的概述Pillow库是Python最好的图像处理库,可能是使用频率最高的图像处...

Python编程之BeautifulSoup库

#头条创作挑战赛#BeautifulSoup是一个可以从HTML或XML文件中快速提取数据的Python库。它能够通过转从入门到精通Python网络爬虫框架Scrapy38换器实...

Python3 新一代Http请求库Httpx使用(详情版)

我们经常使用Python语言的朋友们都清楚,requests是使用率非常高的HTTP库,甚至更早Python2中使用的是urllib、urllib2,也给我们提供了许多方便的功能。但是自从...

小白也可以玩的Python爬虫库,收藏一下

最近,微软开源了一个项目叫「playwright-python」,作为一个兴起项目,出现后受到了大家热烈的欢迎,那它到底是什么样的存在呢?今天为你介绍一下这个传说中的小白神器。Playwright是...

apscheduler,一个超厉害的 Python 库!

大家好,今天为大家分享一个超厉害的Python库-apscheduler。Github地址:https://github.com/agronholm/apschedulerAPSchedule...

给3D Slicer添加Python第三方插件库

对临床医生或医学影像算法研究人员来说,3DSlicer是不错的临床实践或科研工具。随着人工智能和深度学习技术的普及,python已经作为原型开发和验证的计算机编程语言。3DSlicer自带pyt...

Paramiko:一个非常实用的Python库

前言Python的Paramiko库,它是一个用于实现SSHv2协议的客户端和服务器的库。通过使用Paramiko,我们可以在Python程序中轻松地实现远程服务器的管理、文件传输等功能。特别做智能硬...