当前位置: 首页 > news >正文

Python学习笔记(五)函数、异常处理

目录

函数

函数的参数与传递方式

异常处理

函数

函数是将代码封装起来,实现代码复用的目的

函数的命名规则——同变量命名规则: 不能中文、数字不能开头、不能使用空格、不能使用关键字

#最简单的定义函数
user_list=[]
def fun(): #定义一个函数,声明name = input('name:')user_list.append(name)print(user_list)
fun() #调用函数 必须要先声明再调用#定义main函数,主函数是程序的入口,相当于c语言的char main()
#在main上面,要定义函数与类
list1=['wadsad', 'qweqwe']
def show(list_name):for i in list_name:print(f'{list_name.index(i) + 1}.{i}')
if __name__ == '__main__': #主函数show(list1)
#1.wadsad
#2.qweqwe#函数的帮助文档
#可以通过ctrl+点击打开python的源代码,后面的备注就是函数的说明文档
help(print) #也可以通过help()来查看帮助文档
#可以给自己定义的函数添加备注,说明作用
def show(list_name):""":param list_name::return:"""for i in list_name:print(f'{list_name.index(i) + 1}.{i}')
#通过__doc__也可以对帮助文档进行查看
print(show.__doc__)
#    :param list_name:
#    :return:#变量的作用域
#变量分为全局变量和局部变量
#全局变量可以在所有区域中被访问,局部变量只能在函数中或嵌套的函数内被访问
#局部变量
def fun():i = 1print(i)
#全局变量
if __name__ == '__main__':i = 2fun()
#2 局部变量在函数内优先级比全局变量高#return 函数的返回值
#return是什么,函数就是什么
#return会立即执行,后面的语句不会执行
#可以一次return多个值
def fun():v1 = 1v2 = 2v3 = 3return v1,v2,v3 #返回多个值
if __name__ == '__main__': var1,*var2 = fun() #解包print(var2)  #如果没有return,则会自动return一个空值None

函数的参数与传递方式

函数传递不可变类型的对象如char,int等参数时,会把实参复制一份之后给形参传参,对于实参本身没有影响

函数传递可变类型的对象如列表、字典等,对对象引用后操作,映射到对象本身,产生影响

#形参与实参
def fun(var):  #形参(举例)print(f'{var}')
if __name__ == '__main__':var1 = input('press:')fun(var1)  #真实传入的是实参#顺序的参数————按照顺序一一对应的传递参数,最基础的传参形式
#形参和实参位置要一一对应、且数量要一致
def fun(var1,var2):v1 = var1 * 2v2 = var2 + 10return v1,v2 
if __name__ == '__main__':fun(123,456) #按照顺序把123传入var1,把456传入var2#关键字参数————参数名=值的方式传递参数
def fun(var1,var2,var3):print(var1,var2,var3)
if __name__ == '__main__':fun(var2=456,var1=123,var3=789) #直接将var1作为关键字在函数里进行赋值,来传参fun(123,456,var3=789) #混合使用,需要把关键字参数的部分放到后面,不推荐使用#默认值参数————给形参指定一个默认值
def fun(var3,var2,var1=3): #默认值参数需要放在形参列表的最后print(var1,var2,var3)
if __name__ == '__main__':fun(1, 2, 4)
#4 2 1fun(1, 3)
#3 3 1#参数收集————当参数个数不确定时,统一把参数收集起来,封装为元组
#每个函数只能有一个这种参数
#参数收集类函数尽量放到最后,后面的参数必须用关键字参数
def fun(v1,v2,*args,v3): #使用*,参考封包解包,一般使用argsprint(args)
if __name__ == '__main__':fun(123,12345,'qwe',True,v3=123)
#('qwe', True)#关键字参数收集——不确定个数的关键字参数,统一收集,封装成字典
#每个函数只能有一个这种参数
#必须放到最后
def fun(v1,**kwargs):print(kwargs)
if __name__ == '__main__':fun(True,name='ws',age=24,passwd='ws111')
#{'name': 'ws', 'age': 24, 'passwd': 'ws111'}#逆向参数收集——将序列对象作为实参传递,序列被拆分并赋值给形参
#实参为列表或元组时,数量要相同
def fun(var1,*var2): #print(var1,var2)
if __name__ == '__main__':list1 = ['ws','xhy',111,222]fun(*list1)
#ws ('xhy', 111, 222)#实参为字典时,key必须与形参名相同
def fun(var1,var2,**var3):print(var1,var2,var3)
if __name__ == '__main__':dict1 = {'var1':'ws111','var2':True,'v1':'v1','v2':'v2'}fun(**dict1)
#ws111 True {'v1': 'v1', 'v2': 'v2'}#函数传递可变类型的对象时产生的影响
def fun(add):add.append('1')return add
if __name__ == '__main__':list1=[]list2=fun(list1)print(list1)print(list2)
#['1']
#['1']
#通过引用,可以让局部改变全局的对象#lambda表达式————匿名函数,结构简单
#主体只能放一个语句、自动返回return主体语句的结果
#支持各种参数与传参形式
#主要用以简化代码,可以将函数赋值到变量
fun = lambda v1,v2 : v1 * v2
print(fun(11,45))
#495
fun = lambda v1,v2=20 : v1 * v2
print(fun(10))
#200

异常处理

常见的异常导致的错误包括:

用户操作相关:类型错误、无效输入、误操作
网络问题:丢包、对方主机无应答
操作系统与硬件问题:重启,断电等

编程中要尽可能面对各种异常情况,编写全面完整的异常处理逻辑

异常信息包括: 文件位置、行数位置、具体语句、错误类型、异常描述

#异常处理结构————try、except关键字,捕获与处理异常
while True: #添加一个循环try:    #捕获异常num = input('>>') #input输入必定为字符串类型if '.' in num:    #如果内容包含一个.则使用float进行转换num = float(num)else:     #如果内容为数字,则通过int进行转换num = int(num)
****            #如果内容两个都不是,则可以用except进行print(num + 10)breakexcept Exception as e: #如果出现异常,则进行处理。并且把故障信息Exception赋值到e中print('please press number')
print(e)    #查看之前发生的异常#异常类型————所有异常类都是从BaseException类派生出,不同的异常类记录不同的异常信息
#BaseException类下有分支常见异常类型Exception类
help(StopIteration)
#通过异常类型,可以设置多分支的异常处理类型
#except分支结构,会首先寻找有没有子类错误,没有子类再寻找父类,例如必然优先执行IOError的
try:num = input('>>') print(num + 10)
except Exception as e:pass
except SystemExit as e:pass
except StopIteration as e:pass
except IOError as e:pass#finally分支——无论是否有异常,都会执行finally
#进行资源回收,一些进程会占用资源,比如打开的文件、建立的套接字连接、数据库的连接等
#无论是否异常,都需要做资源的回收
try:pass
except Exception as e:pass
finally: #必定执行pass#arise主动引发异常,可以指定异常信息与异常类型
#主要用于和try、except结合使用,主动引发异常,输出异常的语句
raise Exception
#Traceback (most recent call last):
#   File "C:\\Users\\13209\\PycharmProjects\\first\\Study\\异常处理.py", line 23, in <module>
#     raise Exception
# Exception
raise StopIteration
# Traceback (most recent call last):
#   File "C:\\Users\\13209\\PycharmProjects\\first\\Study\\异常处理.py", line 23, in <module>
#     raise StopIteration
# StopIteration#练习:
#让用户输入4位的纯数字,如果不是数字则报异常
#验证是否是4位,如果不是也报错,如果是就输出成功#我写的
def fun():while True:try:n1 = input('Enter student number:')n1 = int(n1)if len(str(n1)) == 4:print('成功')breakelse:print('请输入四位数字')except ValueError as e:print('请输入数字')if __name__ == '__main__':fun()#GPT写的,确实还是GPT写的更加完善,可以理解为什么程序员喜欢用GPT了
def fun():while True:try:n1 = input('Enter student number:')#判断是否为纯数字,这个函数用以判断字符串#如果纯数字则返回True,反之则返回Falseif not n1.isdigit():raise ValueError('输入纯数字')# 检查输入是否为4位数if len(n1) != 4:raise ValueError("输入的数字不是4位数")else:print('成功')breakexcept ValueError as e:print(e)
if __name__ == '__main__':fun()

相关文章:

Python学习笔记(五)函数、异常处理

目录 函数 函数的参数与传递方式 异常处理 函数 函数是将代码封装起来&#xff0c;实现代码复用的目的 函数的命名规则——同变量命名规则&#xff1a; 不能中文、数字不能开头、不能使用空格、不能使用关键字 #最简单的定义函数 user_list[] def fun(): #定义一个函数&…...

Vue实现模糊查询

在Vue中实现模糊查询&#xff0c;你可以使用JavaScript的filter和includes方法&#xff0c;结合Vue的v-for指令。下面是一个简单的例子&#xff1a; 首先&#xff0c;你需要在你的Vue实例中定义一个数据数组和一个查询字符串。 data() { return { items: [Apple, Banana, Che…...

【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…...

主板部件

▶1.主要部件 主板是计算机的重要部件&#xff0c;主板由集成电路芯片、电子元器件、电路系统、各种总线插座和接口组成&#xff0c;目前主板标准为ATX。主板的主要功能是传输各种电子信号&#xff0c;部分芯片负责初步处理一些外围数据。不同类型的CPU,需要不同主板与之匹配。…...

2023年度学习总结

想想大一刚开始在CSDN写作&#xff0c;这一坚持&#xff0c;就是我在CSDN的第九个年头&#xff0c;这也是在CSDN最有里程碑的一年&#xff0c;这一年我被评为CSDN的博客专家啦&#xff01;先是被评为Unity开发领域新星创作者&#xff0c;写的关于一部分Unity开发的心得获得大家…...

服务器感染了.kann勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 勒索病毒成为当前网络安全领域的一大威胁。.kann勒索病毒是其中的一种变种&#xff0c;对用户的数据造成了极大的威胁。本文91数据恢复将介绍.kann勒索病毒的特征、应对策略以及预防措施&#xff0c;以帮助用户更好地保护个人和组织的数据安全。当面对被勒索…...

使用results.csv文件数据绘制mAP对比图

yolov5每次train完成&#xff08;如果没有中途退出&#xff09;都会在run目录下生成expX目录&#xff08;X代表生成结果次数 第一次训练完成生成exp0 第二次生成exp1…以此类推&#xff09;。expX目录下会保存训练生成的weights以及result.txt文件&#xff0c;其中weights是训练…...

【算法刷题】## 算法题目第1讲:双指针处理数组题目 带视频讲解

算法题目第一讲&#xff1a;双指针处理数组题目 解决力扣&#xff1a; [344. 反转字符串][167. 两数之和 II - 输入有序数组][26. 删除有序数组中的重复项][27. 移除元素][283. 移动零][5. 最长回文子串] 配合b站视频讲解食用更佳:https://www.bilibili.com/video/BV1vW4y1P…...

达梦数据:数字化时代,国产数据库第一股终于到来?

又是新的一年开始。回首一年前的此时&#xff0c;在大家千呼万唤地期待中&#xff0c;数据基础制度体系的纲领性文件正式发布。 时隔一年之后&#xff0c;数据资源入表如约而至。2024年1月1日《企业数据资源相关会计处理暂行规定》正式施行&#xff0c;各行各业海量数据巨大的…...

selenium4.0中常见操作方式50条

前阵子升级了py3.9&#xff0c;一些常年陪伴的库也都做了升级&#xff0c;不少命令也更新了&#xff0c;适度更新一下记忆。 1. 打开浏览器&#xff1a;driver webdriver.Chrome() 2. 访问网址&#xff1a;driver.get("Example Domain") 3. 获取当前网址&#xff…...

如何解决使用融云音视频时由于库冲突导致编译不通过的问题

音视频库里面使用了一些第三方库&#xff0c;比如 openssl&#xff0c;libopencore-amrnb 等第三方库&#xff0c;如果集成的过程中遇到冲突可以尝试这样修改&#xff1a; 1、在 Build Settings 中 Other Linker Flags 中把 -all_load 去掉&#xff1b; 2、如果遇到 openssl 库…...

ISP 基础知识积累

Amber&#xff1a;现有工作必要的技术补充&#xff0c;认识需要不断深入&#xff0c;这个文档后续还会增加内容进行完善。 镜头成像资料 ——干货满满&#xff0c;看懂了这四篇文章&#xff0c;下面的问题基本都能解答 看完思考 1、ISP 是什么&#xff0c;有什么作用&#xff…...

Android Studio新手实战——深入学习Activity组件

目录 前言 一、Activity简介 二、任务栈相关概念 三、常用Flag 四、结束当前Activity 五、Intent跳转Activity 六、更多资源 前言 Android是目前全球最流行的移动操作系统之一&#xff0c;而Activity作为Android应用程序的四大组件之一&#xff0c;是Android应用程序的核…...

[足式机器人]Part2 Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-自动控制原理Ch1-10奈奎斯特稳定性判据-Nyquist Stability Criterion Cauchy’s Argument Priciple 柯西幅角原理 结论&#xff1a; s s s平面内顺时针画一条闭合曲线 A A A&#xff0c; B B B曲…...

企业培训系统开发:构建灵活高效的学习平台

企业培训系统的开发在当今数字化时代是至关重要的。本文将介绍一些关键技术和代码示例&#xff0c;以帮助您构建一个灵活、高效的企业培训系统。 1. 技术选型 在开始企业培训系统的开发之前&#xff0c;首先需要选择合适的技术栈。以下是一个基本的技术选型示例&#xff1a;…...

2023秋电子科大信软 程算I 机考真题

基本情况 对应课程&#xff1a;程序设计与算法基础I 考试时间&#xff1a;2小时 题型&#xff1a;函数题编程题 函数题只需要完成期中一些&#xff08;个&#xff09;函数即可 编程题需要自己手动写main函数 提示&#xff1a;本次考试为全年级机考&#xff0c;分上下午场&am…...

Hive用户自定义函数之UDF开发

在进行大数据分析或者开发的时候&#xff0c;难免用到Hive进行数据查询分析&#xff0c;Hive内置很多函数&#xff0c;但是会有一部分需求需要自己开发&#xff0c;这个时候就需要自定义函数了&#xff0c;Hive的自定义函数开发非常方便&#xff0c;今天首先讲一下UDF的入门开发…...

Unity中URP下的线性雾

文章目录 前言一、线性雾 雾效因子二、MixFog1、ComputeFogIntensity 雾效强度计算2、雾效颜色混合 lerp(fogColor, fragColor, fogIntensity); 前言 在之前的文章中&#xff0c;我们实现了URP下的雾效支持。 Unity中URP下的添加雾效支持 在上一篇文章中,我们解析了 URP 下统…...

SpringBoot全局Controller返回值格式统一处理

一、Controller返回值格式统一 1、WebResult类 在 Controller对外提供服务的时候&#xff0c;我们都需要统一返回值格式。一般定义一个 WebResult类。 统一返回值&#xff08;WebResult类&#xff09;格式如下&#xff1a; {"success": true,"code": 2…...

程序媛的mac修炼手册-- 终端shell的驾驭 zsh vs bash

进入终端(Terminal)为新下载的应用配置环境&#xff0c;是Mac生产力up up的关键一步&#xff0c;更是编程小白装大神的第一步。Fake it till you make it , 硅谷大神标准路径&#xff5e; shell的基本原理 为应用配置环境&#xff0c;相当于在应用和操作系统间架桥。由此&…...

基于PHP的校园代购商城系统

有需要请加文章底部Q哦 可远程调试 基于PHP的校园代购商城系统 一 介绍 此校园代购商城系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。(附带参考设计文档) 技术栈&#xff1a;phpmysqlbootstrapphpstudyvscode 二 功能 …...

感知与认知的碰撞,大模型时代的智能文档处理范式

目录 0 写在前面1 GPT4-V&#xff1a;拓宽文档认知边界2 大语言模型的文档感知缺陷3 大一统文档图像处理范式3.1 像素级OCR任务3.2 OCR大一统模型3.3 长文档理解与应用 4 总结抽奖福利 0 写在前面 由中国图象图形学学会青年工作委员会发起的第十九届中国图象图形学学会青年科学…...

ECMAScript和JavaScript的区别

ECMAScript和JavaScript之间的关系和差异可以从以下几个方面来理解&#xff1a; 定义&#xff1a; ECMAScript&#xff1a;ECMAScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff0c;英文名称是European Computer Manufacturers Association&#xff09;通…...

[BUG]Datax写入数据到psql报不能序列化特殊字符

1.问题描述 Datax从mongodb写入数据到psql报错如下 org.postgresql.util.PSQLException: ERROR: invalid bytesequence for encoding "UTF8": 0x002.原因分析 此为psql独有的错误&#xff0c;不能对特殊字符’/u0000’,进行序列化&#xff0c;需要将此特殊字符替…...

用数据结构python写大数计算器

下面是一个基于Python的大数计算器的示例代码&#xff1a; class BigNumberCalculator:def __init__(self, num1, num2):self.num1 num1self.num2 num2staticmethoddef add(num1, num2):result carry 0len1, len2 len(num1), len(num2)max_len max(len1, len2)for i in …...

08.哲说建造者模式(Builder Pattern)

“The odds that we’re in ‘base reality’ is one in billions.” —— Elon Musk 这段话出自马斯克在2016年的一次演讲&#xff0c;“人类活在真实世界的几率&#xff0c;可能不到十亿分之一”。此言一出&#xff0c;可谓一石激起千层浪。有人嘲讽马斯克是“语不惊人死不休…...

ubuntu18.04查询实时内存、CPU占用率命令

gnome-system-monitor效果就是下面这样&#xff1a;...

Python计算圆的面积

Python 计算圆的面积 圆的面积公式为 &#xff1a; 公式中 r 为圆的半径。 # 定义一个方法来计算圆的面积 def findArea(r): PI 3.142 return PI * (r*r) # 调用方法 r float( input("请输入圆的半径:") ) print( "圆的面积为 %.3f&qu…...

(Java企业 / 公司项目)Nacos的怎么搭建多环境配置?(含相关面试题)(二)

上一篇讲了一个单体服务中配置&#xff0c;传统的Nacos配置但是在微服务架构当中肯定都是多环境下配置&#xff0c;比如生产环境&#xff0c;dev测试环境等等。 第一种方式模拟开始&#xff1a; 首先展示在生产环境中nacos如何配置&#xff0c;在模块下新建一个配置文件&…...

DolphinScheduler实际应用

前言 最近公司新启动了一个项目&#xff0c;然后领导想用一下新技术&#xff0c;并且为公司提供多个大数据调度解决方案&#xff0c;我呢就根据领导要求调研了下当前的开源调度工具&#xff0c;最终决定采用DolphinScheduler&#xff0c; 因此研究了一下DolphinScheduler &…...

怎么申请免费网址/国内好的seo

Javascript中总有一些所谓的细节知识会让你目瞪口呆。前段时间&#xff0c;项目组新增一个需要&#xff0c;要求系统中所有显示时间的地方支持日期格式可定制什么事日期格式可定制呢&#xff0c;在平常呢&#xff0c;我们看到的时间格式一般是“yyyy-MM-dd”形式的&#xff0c;…...

商城网站建设合同/简述seo

作者Qiu800820&#xff0c;源码SuperLike&#xff0c;仿今日头条点赞喷射表情动画&#xff0c;主要用于点赞防抖事件的交互提示&#xff0c;这里只提供交互View 防抖功能可以根据Rx自行实现。使用compile com.sum.slike:library:0.2.1参数含义自定义属性名字参数含义eruption_e…...

金华网站建设价格/赣州seo培训

作为开坑专业户&#xff0c;再开个坑&#xff0c;以前在国企时&#xff0c;想专门做渲染&#xff0c;可惜还要看懂引擎&#xff0c;要么没人帮封装。于是进行先学习引擎再学习渲染的路线。 抄写了最低版本的鬼火引擎&#xff0c;osg/osgearth和ogre的大部&#xff0c;osg最长的…...

中山半江红网站建设/百度客服人工服务

第十一章 事件 2013-02-27 11.1 设计要公开事件的类型11.3 设计侦听事件的类型11.4客户端操作 ToDo: 用uml把类的关系画出来 为了帮助理解事件如何工作&#xff0c;先描述一个和事件相关的场景。假定现在要设计一个电子邮件系统&#xff0c;它的功能是&#xff1a;当邮件到达时…...

代做动画毕业设计的网站/网络优化师

2019独角兽企业重金招聘Python工程师标准>>> 安装前准备 http://mirrors.hust.edu.cn/apache/zookeeper/ http://apache.fayea.com/apache-mirror/tomcat/tomcat-7/v7.0.55/src/ https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.ziphttp:/…...

男的女的做那个的视频网站/活动推广软文范例

简介:KubeSphere是一个灵活的轻量级容器PaaS平台&#xff0c;通过了CNCF一致性认证&#xff0c;100%开源&#xff0c;由社区驱动与开发。KubeSphere可以部署并运行在任何基础架构以及所有版本兼容的Kubernetes集群之上&#xff0c;包括虚拟机、物理机、数据中心、公有云和混合云…...