自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(216)
  • 问答 (1)
  • 收藏
  • 关注

原创 Spring项目统一异常处理和信息返回

private String msg = "服务器异常";super();super();return msg;

2024-02-21 12:36:53 227 1

原创 raise主动抛出异常

raise不带参数位于except语句块中时,由于在其之前我们已经手动引发了 ValueError 异常,因此这里当再使用 raise 语句时,它会再次引发一次。1、raise:单独一个 raise。当在没有引发过异常的程序使用无参的 raise 语句时,它默认引发的是 RuntimeError 异常。3、raise 异常类名称(描述信息):在引发指定类型的异常的同时,附带异常的描述信息。2、raise 异常类名称:raise 后带一个异常类名称,表示引发执行类型的异常。

2023-07-05 16:14:06 423

原创 try except else/try except finally

使用else包裹的代码,只有当try没有捕获到任何异常时才会执行,反之,如果try捕获到异常并处理完,else中的代码不会执行。即便当 try 块发生异常,且没有合适和 except 处理异常时,finally 块中的代码也会得到执行。

2023-07-05 14:37:08 315

原创 获取特定异常的有关信息

由于一个except可以同时处理多个异常,那么如何知道当前处理的到底是哪种异常。

2023-07-05 13:06:30 162

原创 函数装饰器

被装饰的函数不再是原来的函数,这取决于装饰器返回的值,如果装饰器返回的是普通变量,那么被装饰的函数名就成为变量名,可以通过打印函数名获得装饰器返回值;如果装饰器返回的是一个函数名称,那么被装饰的函数依然是一个函数。如果有多个函数被不同装饰器修饰,而这些函数的参数个数又不想等,那么可以用*args 和 **kwargs 作为装饰器内部嵌套函数的参数。2、将函数funA执行完成的返回值反馈给funB,通过打印函数输出。如果被装饰的函数有参数时,该怎么作为值传给装饰器。1、将函数funB作为参数传给funA。

2023-07-04 18:33:42 72

原创 __call__方法

_call__方法可以使类的实例对象像普通函数那样调用,以。

2023-07-04 15:51:23 64

原创 issubclass和isinstance函数

如果 class 是 classinfo 的子类返回 True,否则返回 False。classinfo:可以是直接或间接类名、基本类型或者由它们组成的元组。isinstance() 会认为子类是一种父类类型,考虑继承关系。type() 不会认为子类是一种父类类型,不考虑继承关系。相同则返回 True,否则返回 False。object:实例对象。

2023-07-04 15:27:18 67

原创 setattr()、getattr()、hasattr()函数

obj 表示指定的类实例对象,name 表示指定的属性名,而 default 是可选参数,用于设定该函数的默认返回值,即当函数查找失败时,如果不指定 default 参数,则程序将直接报 AttributeError 错误,反之该函数将返回 default 指定的值。获取某个类实例对象中指定属性的值,和 hasattr() 函数不同,该函数只会从类对象包含的所有属性中进行查找。它最基础的功能是修改类实例对象中的属性值。用来判断某个类实例对象是否包含指定名称的属性或方法,返回True或False。

2023-07-04 14:55:25 45

原创 __del__方法

Python 采用自动引用计数的方式实现垃圾回收机制,调用__init__方法初始化对象Person时计时器为0,当用per这个变量接收实例对象的引用时计数器加1。然后又用一个变量p引用了per(相当于实例对象Person()的引用又给了p),这时计数器又加1。这时如果调用del per语句,计数器只减1,因为只删除了per对实例对象的引用,没有删除p的引用,因为计数器不为0,所以对象不会被销毁。

2023-07-04 13:33:45 30

原创 __repr__方法

通过重写类的 __repr__方法就可以自定义实例化对象的输出信息,实际上当输出某个实例化对象时,调用的就是该对象的__repr__方法,输出该方法的返回值。和__init__一样,每个类都包含__repr__方法,如果在父类中找不到该方法,则会直接调用object类的。一般如果直接打印实例对象,得到的信息只会是“类名+object at+内存地址”

2023-07-04 12:22:06 54

原创 __new__方法

重写__new__方法时,需要在参数中传入*args,**kwargs,或者显式地传入对应的参数,那么__init__方法初始化时才能设置其它参数。如果__new__方法返回一个其它类的实例,那么它自身的__init__方法不会被调用,而且__new__方法会初始化一个其它类的对象。__new__方法构造一个当前类的实例,并将该实例传递给当前类的__init__方法,即传给__init__的self参数。如果__new__方法不返回任何实例对象,那么__init__方法不被调用。

2023-07-03 21:56:44 166

原创 python枚举类

一些具有特殊含义的类,其实例化对象的个数需要是固定的,比如用一个类表示月份,则该类的实例对象最多有 12 个;再比如用一个类表示季节,则该类的实例化对象最多有 4 个。在实际编程过程中,如果想避免发生这种情况,可以借助 @unique 装饰器,这样当枚举类中出现相同值的成员时,程序会报 ValueError 错误。Python 3.4 中新增加了 Enum 枚举类。也就是说,对于这些实例化对象个数固定的类,可以用枚举类来定义。和普通类不同,枚举类不能用来实例化对象,访问枚举类成员方式有多种。

2023-07-03 18:41:26 92

原创 python多态

【代码】python多态。

2023-07-03 16:12:43 48

原创 type()函数:动态创建类

事实上,在使用 class 定义类时,Python 解释器底层依然是用 type() 来创建这个类。

2023-07-03 15:04:09 105

原创 super()函数:调用父类的构造方法

注意:如果是多继承,调用第一个父类构造函数的方式以上两种都可以,但调用其它父类只能使用第二种方式。调用父类构造方法的方式有 2 种。1、使用super()函数。

2023-07-01 22:48:57 287

原创 如何调用被重写的方法

当在子类中重写了从父类继承来的方法,那么当在类的外部通过子类对象调用该方法时,Python 总是会执行子类中重写的方法。

2023-07-01 22:09:59 215

原创 @property装饰器

的方法操作类属性,也保护了类的封装性。可以把方法名伪装成属性调用,方法名后面不需要加小括号。python还提供了@property装饰器,可以使用。

2023-07-01 16:13:15 46

原创 property()函数

fget 参数用于指定获取该属性值的类方法,fset 参数用于指定设置该属性值的方法,fdel 参数用于指定删除该属性值的方法,最后的 doc 是一个文档字符串,用于说明此函数的作用。访问类中定义的属性,这就破坏了类的封装原则,类包含的属性应该是隐藏的,只允许通过类提过的方法间接操作。为了能够有效操作类中的属性,类中应包含读(或写)类属性的多个 getter(或 setter)方法。以上 4 个参数可以仅指定第 1 个、或者前 2 个、或者前 3 个,当前也可以全部指定。当然,python也提供了。

2023-07-01 15:09:59 41

原创 实例方法、静态方法、类方法

采用 @classmethod 修饰的方法为类方法;采用 @staticmethod 修饰的方法为静态方法;不用任何修改的方法为实例方法。

2023-07-01 13:34:40 62

原创 类中的类变量、实例变量、局部变量

此范围定义的变量,称为类属性或类变量;:以“self.变量名”的方式定义的变量,称为实例属性或实例变量;:以“变量名=变量值”的方式定义的变量,称为局部变量。

2023-06-30 22:25:57 259

原创 lambda表达式(匿名函数)

lambda后面跟一个或多个参数,紧跟一个冒号,以后是一个表达式。冒号前是参数,冒号后是返回值lambda表达式可以出现在Python语法不允许def出现的地方lambda表达式返回一个值lambda用来编写简单的函数,不会再重复利用的函数1、作为表达式add_func = lambda x,y : x+y # x,y相当于传参,x+y是函数体,返回值就是x+y的结果# 变量接收lambda返回值sum1 = add_func(2,3)print(sum1)sum2 = add_fun

2023-06-28 21:26:22 153

原创 python闭包

闭包就是外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数。2、内层函数引用了外层函数变量或参数。3、内层函数作为返回值返回给外层函数。

2023-06-27 22:31:22 36

原创 函数使用方法

可以将函数赋值给其他变量,用其他变量来调用函数。还可以将函数以参数形式传入其他函数中。

2023-06-27 21:51:09 55

原创 局部函数用法

由于这里的name变量也是局部变量,所以 globals() 函数或者 globals 关键字不适用,可以使用nonlocal关键字。如果所在函数没有返回局部函数,则局部函数的作用范围只在函数内部。如果所在函数将局部函数作为返回值,则局部函数的作用域就会扩大。通过将局部函数作为所在函数的返回值,也可以扩大局部函数的使用范围。如果局部函数中有变量名和所在函数中的变量名一样,会发生遮蔽问题。默认情况下局部函数只能在其所在函数的作用域内使用。

2023-06-27 21:31:10 89

原创 return返回值

函数中可以包含多个return语句,最终执行的只会有一个,一旦执行后函数运行立即结束。

2023-06-27 18:53:34 51

原创 函数传入任意个参数&拆包

拆包主要用于元组和字典类型参数的传递,在调用带有多值参数的函数时,使用拆包简化参数的传递。

2023-06-26 21:40:32 135

原创 内置函数—reversed和sorted函数

在调用 sorted() 函数时,还可传入一个 key 参数,它可以接受一个函数,该函数的功能是指定 sorted() 函数按照什么标准进行排序。对于给定的序列(包括列表、元组、字符串以及 range(n) 区间),该函数可以返回一个逆序序列的迭代器(用于遍历该逆序序列)使用 sorted() 函数对序列进行排序, 并不会在原序列的基础进行修改,而是会重新生成一个排好序的列表。除了使用推导式,还可以使用list()函数将reversed函数返回的迭代器直接转换成列表。

2023-06-26 18:55:42 327

原创 内置函数—zip函数

可以将多个序列(列表、元组、字典、集合、字符串以及 range() 区间构成的列表)“压缩”成一个 zip 对象,所谓“压缩”,其实就是将这些序列中对应位置的元素重新组合,生成一个个新的元组。zip函数返回的zip对象可以像上面一样通过推导式转换,也可以使用例如list()强制转换为列表。如果多个序列元素不一致时,zip会以最短的序列元素个数为准。

2023-06-26 18:35:33 123

原创 控制流程—推导式

集合推导式跟列表推导式非常相似,唯一区别在于用{ }代替[ ]列表推导式就相当于for循环创建列表的简化版。

2023-06-26 16:10:40 38

原创 流程控制—break和continue用法

如果将else代码块的语句放在循环体后面,则部分代码会被执行。如果使用break跳出循环体,不会执行else中包含的代码。如何同时跳出内层和外层循环,可以使用布尔类型变量。break一般和if语句搭配使用。

2023-06-26 15:14:46 130

原创 流程控制—for循环

for循环的语法格式。

2023-06-21 21:03:36 32

原创 流程控制—while循环语句

while 循环还常用来遍历列表、元组和字符串,因为它们都支持通过下标索引获取指定位置的元素。在使用 while 循环时,一定要保证循环条件有变成假的时候,否则这个循环将成为一个死循环。while语句只要条件为真,就会一直重复执行一段代码。

2023-06-21 20:29:18 39

原创 流程控制—if else语句

又称断言语句,可以看作是功能缩小版的if语句,用于判断某个表达式的值,如果值为真,则程序可以继续往下执行,否则会报AssertionError错误。因为与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃,这有利于我们对程序排错,提高程序的健壮性。因此,assert 语句通常用于检查用户的输入是否符合规定,还经常用作程序初期测试和调试过程中的辅助工具。pass是指空语句,是python中的关键字,用来让解释器跳过此处,什么都不做。

2023-06-21 20:12:30 109

原创 frozenset集合

2、如果程序要求必须是不可变对象,比如,字典(dict)的键(key)就要求是不可变对象。1、当集合元素不需要改变时,使用frozenset代替set更加安全。

2023-06-21 16:16:42 52

原创 set集合其它内置方法

【代码】set集合其它内置方法。

2023-06-21 16:01:04 42

原创 基本数据类型—set集合

集合用来保存不重复的元素,只能存储不可变的数据类型,包括整形、浮点型、字符串、元组。

2023-06-21 15:27:28 176

原创 字典内置函数

因为python3中这几种方法的返回值并不是常见的列表或元组类型,所以不推荐直接操作这几个方法的返回值,一般使用以下两种方案。如果被更新的字典中已包含对应的键值对,那么原value会被覆盖,如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。返回某个key对应的value,defaultvalue 表示默认值(可以不写,不写的话是 None)返回一个字典的拷贝,即返回一个具有相同键值对的新字典。popitem()用来随机删除一个键值对。可以更新字典内已有的键值对。拷贝分为深拷贝和浅拷贝。

2023-06-21 14:49:32 48

原创 基本数据类型—字典

Python 更推荐使用 dict 类型提供的 get() 方法来获取指定键对应的值。当指定的键不存在时,get() 方法不会抛出异常。还可以使用python使用dict字典类型提供的fromkeys()方法创建带有默认值的字典。Python 自带垃圾回收功能,会自动销毁不用的字典。先判断是否有对应的键,使用in 或not in。直接给不存在的 key 赋值即可。key不能被修改,只能修改值。

2023-06-19 19:52:57 54

原创 基本数据类型—元组

当创建的元组不再使用时,可以使用del删除,但是python自带垃圾回收功能,会自动销毁不用的元组。python还提供了内置函数tuple(),可以将其它类型转换为元组类型。和列表一样,可以使用索引访问某一个元素,也可以使用切片访问一组元素。因为元组不能被修改,所以只能创建一个新元组代替旧元组。1.1、使用()直接创建。

2023-06-19 16:09:25 59

原创 基本数据类型—列表

列表用于存储任意数目,任意类型的数据集合,是一个有序且可更改的集合,是包含多个元素的有序连续的内存空间。

2023-06-18 21:38:49 52

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除