期末总复习(重点!!!)
一、第6章异常处理¶
1、什么是异常、什么是异常处理异常是指程序在运行过程中发生的错误事件,影响程序的正常执行。异常并不是一定会发生,默认情况下,程序运行中遇到异常时将会终止,并在控制台打印出异常出现的堆栈信息。异常处理是指程序设计时为了避免因异常而导致程序终止而做的一些额外操作。异常处理可以使得异常出现后,程序仍然可以执行。(2)、常见的异常错误
In [1]:
print(a) #变量未定义的异常
--------------------------------------------------------------------------- NameError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_10324\4250713135.py in <module> ----> 1 print(a) #变量未定义的异常NameError: name 'a' is not defined
In [2]:
print('OK' #语法错误异常
File "C:\Users\Administrator\AppData\Local\Temp\ipykernel_10324\3139688914.py", line 1print('OK' #语法错误异常^
SyntaxError: unexpected EOF while parsing
In [3]:
list = [1,4,6,4] list[10] #下标索引异常
--------------------------------------------------------------------------- IndexError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_10324\277762902.py in <module>1 list = [1,4,6,4] ----> 2 list[10] #下标索引异常IndexError: list index out of range
In [4]:
10/0 #除数为0,执行除法异常
--------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_10324\2083481908.py in <module> ----> 1 10/0 #除数为0,执行除法异常ZeroDivisionError: division by zero
In [6]:
a = input('a:')
10/a #执行了类型不支持的操作 改为int(input('a:'))
a:12
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_10324\428881340.py in <module>1 a = input('a:')
----> 2 10/a #执行了类型不支持的操作 改为int(input('a:'))TypeError: unsupported operand type(s) for /: 'int' and 'str'
2、如何处理异常
Python中通常将可能发生异常的代码放在try语句中,如果发生异常则通过except语句来捕获异常并对做一些额外处理,如果没有发生异常则执行后面的else语句,最后执行finally语句做一些收尾操作。 Python中还提供了raise语句允许用户主动抛出异常,raise关键字后面需要提供一个异常实例或者异常类,如果传递的是异常类,则会调用无参数的构造方法来实例化对象。如果捕获到了异常,但是暂时不处理,可以直接通过raise语句抛出异常,此时raise关键字后面什么都不用写。
In [11]:
try:a = eval(input('请输入a:'))b = 10/a
except:if a==0:print('ZeroDivisionError,除数不能为0!')
else:print('b = ',b)print('表达式合法!')
finally:c = a+bprint('c = ',c)
请输入a:0 ZeroDivisionError,除数不能为0! c = 1.0
In [12]:
B=[1,2, 3, 4,5]
try:a=b[10] #(B和b应该一致)
except IndexError:print('IndexError')
except:print('Error')
else:print('OK')
finally:print('Exit')
Error Exit
In [13]:
def test(a,b): #3、try... except...finally结构 try:c=a+b return cexcept Exception as e:print(e) #打印异常信息 c=[] return c finally:c.append(5)print("finally子句")print("finally语句中的c=",c) print("函数执行结束!")test([2],[4]) #调用函数,传递参数
finally子句 finally语句中的c= [2, 4, 5]
Out[13]:
[2, 4, 5]
In [20]:
#实例:定义一个函数,验证密码字符串长度是不断为6-10, 不符合要求时抛出异常。(设置密码验证)
def check_str(content): #用raise抛出自定义异常 if (len(content)<6 or len(content)>12):raise ValueError('长度应在6-12位之间,当前长度为:'+str(len(content))) #raise语句允许用户主动抛出异常else:print('长度符合要求!')#调用函数,不捕获异常(发生异常时,打印异常堆栈信息)
ss = input('请输入一个长度在6到12位之间的密码字符串:')
check_str(ss)
请输入一个长度在6到12位之间的密码字符串:436457 长度符合要求!
二、第6章函数¶
1、参数类型¶
可变长度参数是指函数定义时,无法确定参数的个数。例如系统中的 print函数,不知道用户需要打印多少个对象,此时将需要打印的内容定义为可变长度参数,根据调用者传递的实际参数来确定参数的长度。Python中可变长度参数有两种形式:*参数名和**参数名。(1)*参数名:表示该参数是一个元组类型,可接受多个实参,并将传递的实参依次存放到元组中,主要针对以位置传值的实参;(2)**参数名:表示该参数是一个字典类型,可接受多个实参,并将传递的键值对放到集合中,主要针对以关键字传值的实参。
In [27]:
def fun_1(a,*b):print('a = ',a)print('b = ',b)fun_1(10,10,20,8,20,60) #b的值为元组
a = 10 b = (10, 20, 8, 20, 60)
In [28]:
def fun_2(a,**b):print('a = ',a)print('b = ',b)fun_2(10,c=10,d=20,e=8,f=20,g=60) #b的值为字典
a = 10
b = {'c': 10, 'd': 20, 'e': 8, 'f': 20, 'g': 60}
2、变量作用域¶
根据变量定义的位置,可将变量分为全局变量和局部变量。(1)全局变量:定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作。如果有赋值语句,相当于创建了一个同名的局部变量;(2)局部变量:定义在函数内部的变量,只能在它被定义的函数中使用。在函数外面无法直接访问。(3)注意:当局部变量和全局变量同名时,在函数内部使用变量时,通常都是指局部变量,如果确实需要对全局变量进行修改,需要使用global关键字对变量进行声明,此时操作的就是全局变量了。
In [30]:
def fun_3():print(a) #在函数内部访问全局变量a = 10 fun_3() print(a)
10 10
In [31]:
def fun_4():a = 8 #在函数内部定义同名的局部变量print(a)a = 10 fun_4() print(a)
8 10
In [34]:
def fun_5():global a #在函数内部对全局变量操作(将局部变量转换成全局变量)a = 8 #给全局变量赋值print('局部变量a = ',a)a = 10 #相当于局部变量的实参
fun_5()
print('全局变量a = ',a)
局部变量a = 8 全局变量a = 8
In [33]:
def fun_6():a.append(12) #在全局变量为可变序列时,可直接在函数内部对全局变量操作print(a)a = [1,2,3] fun_6() print(a)
[1, 2, 3, 12] [1, 2, 3, 12]
3、特殊函数:¶
匿名函数1ambda表达式:没有函数名字的临时使用的函数,可以将1ambda表达式看成是函数的简写形式。(1)lambda表达式的语法:lambda 参数列表:表达式(2)与函数区别:关键字不同:def、lambda;没有名称;参数列表不需要一对圆括号,只包含一个表达式,不能包含多条语句。(3)lambda表达式的主体是一个表达式,而不是一个代码块,在表达式中可以调用其它函数,并支持默认值参数和关键字参数,表达式的结果相当于函数的返回值。
In [39]:
#lambda表达式形式
lambda_func = lambda x:x * 2 #将lambda定义的函数赋值给一个变量print(lambda_func(5))
print(lambda_func("5"))#函数形式
def lambda_func(x):return x * 2print(lambda_func(5))
print(lambda_func("5"))
10 55 10 55
In [36]:
x = 2 y = 3 z = 7 x+y+z
Out[36]:
12
In [37]:
def test(x,y,z):return x+y+ztest(2,3,7)
Out[37]:
12
In [40]:
test = lambda x,y,z:x+y+z
In [41]:
test(2,3,7)
Out[41]:
12
In [49]:
teat2 = lambda x=4,y=6,z=12:x**2+y*2+z/3 teat2(4,6,12)
Out[49]:
32.0
三、数据结构¶
1、元组:是不可变序列,不可修改里面的元素。元组中元素放在一对圆括号“()”中,并用逗号分隔,元素类型可以不同。注意:当元组中只包含一个元素时,元素后面的逗号不能省略,否则系统会将其看做是其他数据类型。2、列表:是有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号隔开,元素的类型可以不同。3、字符串:由字符组成的一个不可变序列,和元组作用类似,也支持索引、切片、重复、合并等操作。4、字典:无序的映射类型,由若干”键(key):值(value)”组成,“键”和“值”之间用冒号隔开,所有“键值对”放在一对大括号“{}”内,并用逗号分隔。其中“键”必须为不可变类型,在同一个字典中,“键”必须是唯一的,但“值”可以重复。5、集合:是无序可变不重复的,不支持索引、切片等操作。元素放在一对大括号“{}”中,并用逗号分隔,元素类型可以不同,但集合中元素不能重复。集合中不能包含可变元素,例如列表。注意:不能直接通过a={} 创建空集合,此时创建的是一个空字典。可通过循环遍历集合中的所有元素。
1、列表切片:列表对象[start:end:step]
相关文章:
期末总复习(重点!!!)
一、第6章异常处理 1、什么是异常、什么是异常处理异常是指程序在运行过程中发生的错误事件,影响程序的正常执行。异常并不是一定会发生,默认情况下,程序运行中遇到异常时将会终止,并在控制台打印出异常出现的堆栈信息。异常处理…...
input 获取焦点后样式的修改
一、实现目标 1.没有获取焦点时样子 2.获取焦点时 代码: <input class"input"placeholder"请输入关键字" input"loadNode" />css .input {border-radius: 14px;border:1px solid #e4e4e4;margin: 5px;margin-top: 10px;wi…...
持续集成交付CICD:Jenkins使用GitLab共享库实现自动上传前后端项目Nexus制品
目录 一、实验 1.GitLab本地导入前后端项目 2.Jenkins新建前后端项目流水线 3.Sonarqube录入质量阈与质量配置 4.修改GitLab共享库代码 5.Jenkins手动构建前后端项目流水线 6.Nexus查看制品上传情况 7.优化代码获取RELEASE分支 8.优化Jenkins流水线项目名称 一、实验 …...
50mA、24V、超低 IQ、低压降稳压器
一、Description The TPS715 low-dropout (LDO) voltage regulators offer the benefits of high input voltage, low-dropout voltage, low-power operation, and miniaturized packaging. The devices, which operate over an input range of 2.5 V to 24 V, are stable wit…...
【Python测试开发】文件上传操作
先写一个上传页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文件上传</title><link href"http://dcn.bootcss/bootstrap/3.3.0/css/bootstrap.min.css" rel"styleshee…...
深兰科技AI医疗健康产品获3000台采购订单
12月6日,武汉某企业与深兰科技签署协议,一次性采购3,000台深兰科技AI生理健康检测仪——扁鹊。 深兰科技AI生理健康检测仪——扁鹊是深兰科技推出的人体生理指标检测产品。基于AI生物技术、融合互联网医疗及AIoT技术,深兰科技AI生理健康检测仪…...
金鸣表格文字识别的图片转word,模块不同,效果有何差异?
金鸣表格文字识别系统可以将图片等格式的文件转为word,而且有好几种输出word的方式,那么,它们都有什么区别呢? 一、表格识别模块输出的word。可以输出文本和表格混合格式的word,比较适合有表格样式的图片转换识别&…...
Qt Creator设置IDE的字体、颜色、主题样式
Qt是一款开源的、跨平台的C开发框架,支持Windows、Linux、Mac系统,从1995发布第一版以来,发展迅猛,最开始是用于Nokia手机的Symbian(塞班)系统和应用程序开发,现在是用于嵌入式软件、桌面软件(比如WPS、VirtualBox)、A…...
SpringBootWeb入门、HTTP协议、Web服务器-Tomcat
目录 一、SpringBootWeb入门 二、HTTP协议 HTTP-请求协议 HTTP-响应协议 HTTP-协议解析 三、Web服务器-Tomcat 服务器概述 Tomcat 一、SpringBootWeb入门 直接基于SpringFramework进行开发,存在两个问题:配置繁琐、入门难度大 通过springboot就…...
【Jenkins】Centos环境安装Jenkins(通过rpm安装)
在Centos操作系统中通过rpm安装Jenkins 参考官网 https://www.jenkins.io/doc/book/installing/linux/#red-hat-centos 1、下载安装Jdk17 下载安装 # 更新您的系统,不一定需要 # sudo yum -y update # 安装将用于下载 Java 17 二进制文件的 wget 命令行工具。 s…...
华为数通---配置基本QinQ示例
QinQ简介 定义 QinQ(802.1Q-in-802.1Q)技术是一项扩展VLAN空间的技术,通过在802.1Q标签报文的基础上再增加一层802.1Q的Tag来达到扩展VLAN空间的功能,可以使私网VLAN透传公网。由于在骨干网中传递的报文有两层802.1Q Tag&#x…...
利用poi实现将数据库表字段信息导出到word中
研发文档对于开发人员来说都不陌生了,而研发文档里重要的一部分就是表结构设计,需要我们在word建个表格把我们数据库中的表字段信息填进去,表多的话靠我们手动去填非常累人!!! 因此作为开发人员可不可以写…...
深入浅出分析kafka客户端程序设计 ----- 生产者篇----万字总结
前面在深入理解kafka中提到的只是理论上的设计原理, 本篇讲得是基于c语言的kafka库的程序编写!!!!! 首先要编写生产者的代码,得先知道生产者的逻辑在代码上是怎么体现的 1.kafka生产者的逻辑 …...
粗到细语义(Coarse-to-Fine Semantics)
粗到细语义(Coarse-to-Fine Semantics)是一种深度学习模型的设计方法,它通过逐步细化的方式来理解文本中的语义信息。这种方法通常用于文本分类、情感分析、问答等任务中。 在粗到细语义中,模型首先从整体上理解文本的大致意思&a…...
小程序开发实战案例四 | 小程序标题栏如何设置
上一期我们了解了 小程序底部导航栏 的实现效果,今天一起来了解下如何设置小程序标题栏~ 基础标题栏 小程序标题栏主要包含返回、标题、收藏、菜单、收起 5 个模块,其中能够调整的部分只有标题和背景色。 另外 IDE上无法展示收藏按钮&#…...
Flutter在Visual Studio Code上首次创建运行应用
一、创建Flutter应用 1、前提条件 安装Visual Studio Code并配置好运行环境 2、开始创建Flutter应用 1)、打开Visual Studio Code 2)、打开 View > Command Palette。 3)、在搜索框中输入“flutter”,弹出内容如下图所示,选择“ Flutter: New Pr…...
如何用ChatGPT分析恶意软件?
自从我们进入数字化时代以来,恶意软件就一直是计算机应用系统的“心腹大患”。事实上,每一次技术进步都会为恶意行为者提供更多的工具,使得他们的攻击行为更具破坏性。不过,如今生成式人工智能的崛起,似乎让一直以来的…...
【Axure高保真原型】能增删改的树形表格
今天和大家分享能增删改的树形表格的原型模板,包括展开、折叠、增加、修改、删除表格内容,那这个原型模板是通过中继器制作的,所以使用简单,只需要填写中继器表格,即可自动生成对应的树形表格。这个模板最高支持6级树形…...
前端打包工具之Webpack5
前端打包工具之Webpack5 什么是打包工具打包工具的作用常见的打包工具一、Webpack1、什么是[webpack](https://webpack.docschina.org/concepts/)2、webpack本身的功能是有限的3、webpack基本使用:基于本身功能只解析JS资源4、webpack配置4.1、entry(入口…...
linux设置环境变量
linux设置环境变量 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! Linux设置环境变量:打造个性化开发环境 在Linux系统中,环境变量是一项…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
