- 博客(130)
- 收藏
- 关注
原创 萌新学 Python 之动态绑定属性和方法以及魔法函数
使对象兼容列表、字典的索引和键的操作,把对象当作列表和字典使用,列表还可以进行切片,__getitem__ 当作列表、字典只能进行。:使对象兼容列表、字典的索引和键的操作,把对象当作列表和字典使用,列表还可以进行切片,__setitem__ 当作列表、字典可以进行。:使对象兼容列表、字典的索引和键的操作,把对象当作列表和字典使用,列表还可以进行切片,__delitem__ 当作列表、字典可以进行。当实例属性存在时,修改实例属性值,当实例属性不存在时,添加实例属性,即。当类属性不存在时,添加类属性,即。
2025-03-09 19:10:40
257
原创 萌新学 Python 之面向对象的下划线控制权限访问
2.下划线出现在变量的后面,比如 xx_ ,避免和关键字或者 python 自定义的内置函数冲突。python 中访问的权限控制通过下划线 _ 来控制,类似于 java 中的 public 等。1.单个下划线:主要作为临时变量或无意义的变量,当作占位符使用,可以忽略特定的值。不能使用 对象.__ 访问私有方法和私有属性,需要通过。,这些属性和方法通常具有特殊的用法,是 python。的属性和方法,比如 __init__、__dict__的变量(属性),这些属性表示。,比如 __属性、__方法。
2025-03-08 22:43:48
185
原创 萌新学 Python 之面向对象编程和面向对象的三大特性
如果是通过继承来实现多态,比如子类继承了父类,子类有方法名,父类也有相同的方法名,但是二者执行的内容不同。,即一种方法的多种状态,同一个方法有不同的函数(对象),不同的对象去调用时返回的状态是不一样的。类相当于所有对象的模板,它主要定义了该类对象的属性(数据)和方法(操作数据的函数)包括对象、类、属性(类属性、实例属性)、方法(类方法、实例方法、静态方法),每个对象都有相同的属性,属性值可以相同可以不同,对象共享实例方法。:不同的类中有相同的方法名,类不同,创建的实例对象也不同。
2025-03-08 17:32:32
646
原创 萌新学 Python 之 with 文件操作语句
案例:创建一个目录 file_txt,生成 10 个 001.txt,...,010.txt 文件,并且每个文件随机写入 10 个 a ~ z 的字母。with 语句用于资源管理,避免资源泄露,对文件操作时,不管文件是否有异常,都会自动清理和关闭。因为原 test.txt 文本有内容,如果在末尾添加新内容,先要计算字符串长度,再在后面添加,中间插入同理,需要用到索引下标切片,若是修改内容,在修改的字符串位置写入新内容即可。注意,写入操作完成后,自动关闭,需要再读取文件重新打开。write(),写入内容。
2025-03-01 21:28:06
348
原创 萌新学 Python 之 os 模块
Python 的 sys 库是一种内建模块,可对 Python 的运行环境进行访问和操作。在当前目录下创建多级目录,当文件已存在时,无法创建该文件,程序报错。在当前目录下创建新目录,当文件已存在时,无法创建该文件,程序报错。os 模块:主要提供程序与操作系统进行交互的接口。,判断路径是否存在,存在返回 True。,判断目录是否存在,存在返回 True。,判断文件是否存在,存在返回 True。模块,主要用来处理文件路径的函数。,输出当前文件的绝对路径。,输出当前路径文件的目录。,获取当前目录的文件,
2025-02-28 22:25:45
281
原创 萌新学 Python 之 random 函数
比如 weights = [1, 2, 3, 4],cum_weights = [1, 1+2, 1+2+3, 1+2+3+4] = [1, 3, 6, 10]如果 cum_weights = [1, 1, 1, 1],那么 weights = [1, 0, 0, 0]randint(a, b),生成 [a, b] 之间的整数,包含边界 a 和 b,a 和 b 为整数。randrange(起始, 结束, 步长),生成 [起始, 结束) 之间的整数,步长默认为 1。
2025-02-28 19:17:40
165
原创 萌新学 Python 之模块管理
当 .py 文件被其他文件当作模块导入时,__name__ 属性自动设置为模块名(当前文件名)包的所有目录下有一个 __init__.py 文件,该文件可以为空,也可以用来初始化模块。模块就是一个 python 代码文件,模块可以包含函数、类,可以提高代码复用率提高效率。:自己写的代码,包括类和函数,文件名就是模块名,使用方式 import 模块(文件名)包就是一个目录,存放多个 python 代码文件的目录,使用方式:包.模块。从模块中导入指定的函数,可以直接使用:from 模块 import 函数。
2025-02-26 21:30:57
200
原创 萌新学 Python 之装饰器函数
主要用来修改其他函数的功能,在不改变原函数功能的情况下,额外扩展或修改函数的功能。函数的参数有位置、关键字、默认值、可变参数,还可以使用另一个函数作为参数。案例:使用装饰器统计 1+...+1000000 总共花费的时间。案例:使用递归函数求斐波那契数列,统计递归函数调用的次数。案例:使用装饰器函数,结合生成器,求完美数。时间后面加浮点数是因为数据太小。可以 debug 查看执行过程。
2025-02-26 17:40:53
118
原创 萌新学 Python 之迭代器和生成器
对象含 __iter__ 方法就是一个迭代器,函数获取下一个元素,如果没有元素则抛出。关键字生成值,就是一个生成器。案例:生成器实现斐波那契数列。,生成迭代器获取的是字典的。案例:生成器实现计数器功能。执行功能,节省内存空间。创建迭代器:iter。
2025-02-26 14:04:06
115
原创 萌新学 Python 之闭包函数
2.内部函数必须引用外部函数的变量,如果需要修改变量,必须使用关键字 nonlocal 声明变量。闭包函数:在一个函数体内嵌套函数,是一个函数对象,允许在内部函数中修改或引用外部函数的变量。1.函数必须有一个嵌套函数,在定义函数时,内部再定义一个函数。案例 2:定义一个计算器,实现 add 加法和 sub 减法。案例 3:通过闭包函数,实现银行账号的存款和取款功能。3.外部函数的返回值必须是内部函数名。案例 1:创建一个计数器。
2025-02-25 21:06:51
157
原创 萌新学 Python 之递归函数
案例 3:计算列表中相邻 2 个元素的值,组成一个新列表。递归函数主要由两部分组成:递归的调用和递归的终止条件。案例 4:二维矩阵进行转置,即行列互换。递归函数:在函数体内调用自己。案例 2:计算 2 进制转换。
2025-02-24 20:48:33
171
原创 萌新学 Python 之函数的参数
4. 函数中 return 和 print 的用法,没有 return 函数返回的是 None,可以使用 print 代替输出。print 是控制台输出,return 是函数返回值,需要 print 控制台输出后才可以看到返回值。*args 和 **kwargs 可以同时使用,可变的关键字必须写在最后面。可变的参数(*args 个数可变参数、**kwargs 关键字可变参数)定义函数时对形参进行赋值,如果与位置参数同时使用,默认值必须写在最后面。函数的参数有:位置参数、关键字参数、默认值参数、
2025-02-24 16:22:03
245
原创 萌新学 Python 之自定义函数
比如形参类型设为 int 型,x:int,实参数据是浮点型,结果不受影响,输出也是浮点型,只是说可以接受 int 型,但不会强制约束。1.形式参数:也称为形参,就是定义函数时使用的参数名,名字可以任意取,表示函数可接受的参数,不会强制类型约束。函数主要用来封装功能,具有独立功能的代码块,可以提高代码重复利用率,便于模块管理。3.局部变量:定义在函数内的变量,主要作用于该函数,global 声明为全局变量。2.实际参数:也成为实参,就是在调用函数时传入的参数,通过实参来决定参数的类型。
2025-02-23 19:50:20
290
原创 萌新学 Python 之 lambda 函数
max|min 最大最小值:max(可迭代对象, key=lambda 函数)、min(可迭代对象, key=lambda 函数)读取出来后,再通过 if 语句过滤,找到大于 20 的值,返回给 for 前面的 i,i 最终生成列表。any 某一个 | all 全部:any(可迭代对象)、all(可迭代对象),判断迭代对象返回布尔值。案例 2:结合 if 语句,输入一个字符串,判断长度,小于 6 位全部转大写,大于 6 位输出。map 映射函数:map(lambda, 可迭代对象),返回是 map 对象。
2025-02-22 20:39:04
499
原创 萌新学 Python 之推导式
S 中至少有一个字符且如果 S 中的所有字符都是字母数字,那么返回结果就是 True;S 中至少有一个字符且如果 S 中的所有字符都是数字,那么返回结果就是 True;S 中至少有一个字符且如果 S 中的所有字符都是字母,那么返回结果就是 True;S.isdigit() 返回的是布尔值:True False。S.isalnum() 返回的是布尔值:True False。S.isalpha() 返回的是布尔值:True False。,使用 tuple(对象),格式与列表类似,元组返回的是对象。
2025-02-21 16:35:25
371
原创 萌新学 Python 之 if 语句的三目运算符
(搞混了冒号写成了逗号,报了 string indices must be integers 错误)如果 len_str > 6,执行最前面的符合操作,否则,执行后面的不符合操作。if 语句的三目运算符嵌套,通常最多两层,多了代码可读性差。把输入的字符串长度赋值给 len_str。(海象表达式)提高代码可读性。
2025-02-19 21:51:31
258
原创 萌新学 Python 之 while 循环语句和 break、continue 循环中断
案例:猜数字游戏,随机生成一个数字,猜中了提示,猜大猜小也提示,且给出范围。while 循环语句:基于条件表达式来进行循环,当不满足条件时退出循环。break 和 continue 主要用来控制循环,结束循环语句。条件明确循环次数时,使用 for 循环自动结束循环。条件不明确循环次数时,推荐使用 while 循环。'循环结束后,执行的语句'2.通过变量改变循环条件,否则进入死循环。while 循环基本格式如下。自行 debug 查看即可。1.控制循环条件的变量。
2025-02-19 20:09:52
157
原创 萌新学 Python 之 for 循环语句
(for 迭代对象 1 和 for 迭代对象 2 属于嵌套循环,for 迭代对象 1 和 for 迭代对象 3 属于并列循环)它可以遍历集合的对象,为各种容器提供了公共的操作接口,隔离对容器的遍历操作和底层实现,从而解耦。for 循环语句是基于迭代器来进行循环,遍历元素,完成后自动结束。继续从外循环获取第二个值,再从内循环连续获取直到范围结束,先从外循环获取一个值,再从内循环连续获取直到范围结束,重复上述步骤,直到外循环全部结束,最后再执行一遍内循环。'当循环完成后,执行的语句'
2025-02-19 15:42:33
330
原创 萌新学 Python 之集合 set
4.集合 set 与字典 map,都是以 hash 值分布存储,是。集合 set:使用一对大括号,元素写在大括号之间,使用逗号分隔。集合增加的元素只能是不可变的数据类型,比如数值、字符串和元组。集合中的元素只能是不可变的数据类型,不能是列表、字典和集合。的子集,如果是返回 True,不是则返回 False。的子集,如果是返回 True,不是则返回 False。,判断两个集合是否有相同的元素,有。,返回两个集合中出现相同的元素,,返回两个集合中不同的元素,,返回两个集合的全部元素,,对两个集合进行减法运算,
2025-02-17 20:56:18
245
原创 萌新学 Python 之字典 dict
同理,获取字典的值 values,返回字典视图,使用 list 返回列表。获取键值对组成的元组,list 返回,字典视图是 dict_items。字典的浅拷贝,创建新字典,如果修改可变类型,原内容也会改变。获取字典的键,返回字典视图,使用 list 返回列表。清空原字典键值,返回 None,原字典变成空字典。,查看键,类型是 dict_keys 字典视图。键不存在则返回新值,若缺少新值,返回 None。2.字典的键相同时,只会记录最后一个键的值。删除指定的键,返回建的值,键不存在则报错。
2025-02-15 22:15:50
386
原创 萌新学 Python 之列表 list
元组属于不可变的类型,特殊情况下,元组的元素为可变类型,修改元组元素 id 不变。list 列表:用中括号定义,元素写在中括号之间,元素之间使用逗号分隔。没有冒号是索引,有冒号是切片,切片范围左闭右开,左边包含右边不包含。1.列表属于可变数据类型,当元素修改后,内存地址不会改变。通过索引值修改列表元素,修改后,内存地址 id 不变。列表的元素必须是相同的类型,否则无法排序,程序将报错。3.列表的元素类型不受限制,可以是任意类型。1.在原列表中添加元素,元素可以是任意类型。
2025-02-13 21:14:33
343
原创 萌新学 Python 之元组 tuple
例如:tup1 = (1, 3.14, 'Hello', (1, 2, 3), ['a', 'b'], {'a', 'b'}, {'name': 'zhangsan', 'age': 18})内置函数:len 返回元组中元素的个数,max、min 必须是同类型的,del 从内存中删除对象。步长默认 1,开始索引默认从左到右从 0 开始,截取的范围左闭右开(左边包含,右边不包含)4.当元组的元素属于可变类型时(列表、字典、集合),修改可变类型的元素时,内存地址不变。元组中元素的类型没有限制,可以是任意元素。
2025-02-12 20:37:01
247
原创 萌新学 Python 之 If 语句
print('条件 2 表达式不成立,执行的语句')print('条件 2 表达式成立,执行的语句')print('条件 1 表达式不成立,执行的语句')print('条件 1 表达式成立,执行的语句')print('以上条件都不成立时,执行的语句')print('条件 1 成立,执行的语句')print('条件 2 成立,执行的语句')print('条件不成立,执行的语句')print('条件成立,执行的语句')print('条件成立,执行的语句')elif '条件 2 表达式'
2025-02-10 20:23:06
143
原创 萌新学 Python 之字符串及字符串相关函数
比如 isdecimal(是否是数字)、isdigit(是否是数字,包含字节 b 开头)、isnumeric(是否是数字,包含汉字和数字)、:索引值从 -1 开始,依次递减,-10 -9 -8 -7 -6 -5 -4 -3 -2 -1。而且原字符串有两个点只去除了前面,因为 w 和空格都去除了,前面的点成了字符串的头,(这里尝试了下去除中间的任意字符,但没法去除,只有字符串两边的才行,如果指定的字符串为多个字符,逐个去除,直到出现不同的停止。
2025-02-09 21:13:08
705
原创 萌新学 Python 之数值处理函数 round 四舍五入、abs 绝对值、pow 幂次方、divmod 元组商和余数
说明:对数值进行四舍五入,小数位可以没有,也可以是负数(从小数点左边开始进行)关于数值处理的常用函数:round、abs、pow、divmod。例 pow(2,3) 表示 2 的 3 次方等于 8。
2025-01-29 17:06:45
314
原创 萌新学 Python 之运算符
按位与 & 两者比较,位数同时为 1 结果为 1,同时为 0 或者一个 1 一个 0,结果为 0,所以是 0010,结果输出是 2。按位或 | 两者比较,位数同时为 0 结果为 0,同时为 1 或者一个 1 一个 0,结果为 1,所以是1010,结果输出是 10。按位异 ^ 两者比较,位数相同为 0,不同为 1,所以是 1000,结果输出是 8。条件为 True,结果为 False,反之,条件为 False,结果为 True。时,结果为 True,否则为 False。可变数据类型和不可变数据类型一样。
2025-01-29 15:39:50
360
原创 萌新学 Python 之数据类型
十六进制 HEX(Hexadecimal),开头为 0x,只有 0123456789ABCDEF。由 0~9 的数字和小数点组成,表示方法有十进制、科学记数、正无穷数、负无穷数。组成 {'name':'zhangsan', 'age':'18'}由 0~9 的数字组成,表示方法有二进制、八进制、十进制、十六进制。正负无穷数:float('inf')、float('-inf')基本类型中的转换函数:int、float、str、chr、ord。二进制 BIN(Binary),开头为 0b,只有 01。
2025-01-24 20:24:42
360
原创 萌新学 Python 之 Print 标准输出函数和 Input 标准输入函数
若不想用这些控制符,在符号面前加/转义,即//b,输出结果保留/b但内容不受影响(当作普通字符输出了)比如输入地址,\加文件夹首字母可能会被程序理解成控制符,所以需要在地址前加R或者r,不进行转义。(路径用一个\即可,因为我的包名t开头,成了\t,所以用了\\,意思一样)默认为False,如果改为True,输入到文件时,立即写入文件。%n.mf(n是整数,代表数值宽度,m是整数,代表小数位精度)%ns同理(n是整数,代表数值宽度,正数右对齐,负数左对齐)
2025-01-19 20:39:51
261
原创 萌新学 Python 之变量
例如,name = 'zhangsan'(name 是变量名,= 是赋值运算符,zhangsan 是变量的值)例如:pip freeze > D:\Python\requirements.txt。Python 中的帮助操作:help(对象或函数)、dir(对象或模块)就是所有程序中基本组成单元,主要用来存放数据,指向内存中存储数据的地址。按住 Ctrl 键,鼠标选中函数,点击,跳转帮助信息。变量由三部分组成:变量名 = 变量值。就是定义变量,函数,类等。代码缩进快捷键:Tab 键。1.不能使用数字开头。
2025-01-08 20:33:51
243
原创 萌新学 Python 之相关工具 Anaconda、Pip
(在requirements.txt文本中可以使用==,>=,<=,>,<来指定版本)计算机中的字符集:ascii、gb2312、gbk、gb18030、unicode、utf-8。2.多行注释:''''''(三个单引号或者三个多引号)删除环境:condaremove-ntest--all。可以看到,版本选了3.7,下载了python-3.7.16。(-n后面是你创建的名字,=后面是版本)调式代码,运行代码,也可以管理项目环境。包管理工具:安装、卸载、更新第三方库。
2025-01-06 20:49:20
961
原创 进阶SpringBoot之服务注册
pom.xml 文件导入包,dubbo-spring-boot-starter、zkclient、zookeeper(排除 slf4j-log4j12)service 包下创建 TicketServiceImpl 类,实现 TicketService 接口,重写方法。把 TicketService 接口复制到 service 包下,保持和服务端相同的接口名(包名路径要相同)service 包下创建 UserService 类,从注册中心拿到服务。2)配置注册中心的地址、服务发现名和要扫描的包。
2024-09-27 21:07:34
681
原创 进阶SpringBoot之 Dubbo-admin 安装测试
Dubbo-admin 是一个可视化的监控程序,可以让用户更好的管理监控众多的 Dubbo 服务。它能让 Java 程序连接到 Zookeeper,并利用 Zookeeper 消费、提供服务。Dubbo-admin:监控管理后台,查看注册了哪些服务,哪些服务被消费。Dubbo 是一个 jar 包,本身并不是一个服务软件。target 目录下生成了一个 jar 包。在项目目录下打包 Dubbo-admin。java -jar xx(每个版本不同)先去开启 Zookeeper 服务。Dubbo:jar 包。
2024-09-26 23:20:41
493
原创 进阶SpringBoot之 Dubbo 及 Zookeeper 安装
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Hadoop 和 Hbase 的重要组件。在 conf 目录下,复制 zoo_sample.cfg,粘贴并重命名为 zoo.cfg。create -e /demo 123 创建一个 demo 节点,值为123。再去 bin 目录下双击 zkServer.cmd。先放着,再双击 bin 目录下 zkCli.cmd。get /demo 获取 /demo 节点的值。下载压缩包后解压到文件夹。添加一行 pause。
2024-09-26 00:00:14
517
原创 进阶SpringBoot之分布式系统与 RPC 原理
(Remote Procedure Call)是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。分布式系统是由一组通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成的系统。由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。一个应用部署在 A 服务器上,想要调用 B 服务器上应用提供的函数或方法。是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。RPC 的作用就是像调用本地函数一样去调远程函数。5.最后返回到本地的一个调用结果。
2024-09-24 11:58:07
534
原创 进阶SpringBoot之集合 Redis
测试类在属性上方添加 @Qualifier("redisTemplate") 指定 config 包下的配置类。(在跑 Redis 测试之前,需要先安装 Redis,并开启 Redis 服务)implements Serializable 所有 pojo 的对象都会序列化。Spring boot 所有的配置类,都有一个自动配置类。自动配置类都会绑定一个 properties 配置文件。可以自定义 RedisTemplate。pom.xml 文件如下。pojo 包下创建实体类。
2024-09-23 21:34:12
471
原创 进阶SpringBoot之异步任务、邮件任务和定时执行任务
拿 qq 邮箱举例,点击设置 -> 账号,下滑找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务。(加了注解后,实际上响应很快,页面很快出现,但程序执行过了三秒,就是输出的那句“数据正在处理”过了三秒出现)方法里调用 AsyncService 类里的 hello 方法,停止三秒。controller 包下创建 AsyncController 类。service 包下创建 AsyncService 类。自动装配 AsyncService。可以实现在线生成表达式。
2024-09-16 20:59:35
520
原创 进阶SpringBoot之 Swagger 分组与接口注释
controller 包下 HelloController 类的方法需具体到 Get、Post 请求。1.可以通过 Swagger 给一些比较难理解的属性或接口增加注释信息。上述只是配置一个分组,而在复杂环境中,需要配置多个分组。(tags = "Hello控制器")可以在 Swagger 上随意测试填写信息。只需在 SwaggerConfig。点击执行后就会报 500 错误。效果如下:实现文档分组。如果代码有错误的情况。2.接口文档实时更新。
2024-09-13 22:07:48
712
原创 进阶SpringBoot之 Swagger 配置扫描接口和开关
没具体到 Get、Post,直接写 @RequestMapping,swagger-ui 就会全部显示。因为设置了环境,所以需要在 application.properties 添加一行。同理,可以设置其他 properties 文件,真实环境和测试环境换不同的端口号。(RestController.class):扫描。(GetMapping.class):扫描。配置要扫描接口的方式。
2024-09-10 21:50:06
321
原创 进阶SpringBoot之配置 Swagger API 框架信息
之前尝试过添加依赖 springfox-boot-starter、springdoc-openapi-starter-webmvc-ui,config 包下 SwaggerConfig.java 开启 Swagger2,@EnableSwagger2。(新版地址换成了 http://localhost:8080/swagger-ui/index.html)启动,进入 http://localhost:8080/swagger-ui.html。Swagger 依赖到最新版本 3.0.0,一旦写了配置类,
2024-09-08 23:45:47
488
原创 进阶SpringBoot之 Shiro(6)整合 Thymeleaf
pom.xml 导入 thymeleaf-extras-shiro 的 jar 包,整合 shiro-thymeleaf。ShiroConfig 配置类:ShiroDialect。SecurityManager:管理所有用户。Subject:用户。Realm:连接数据。
2024-09-03 19:42:01
394
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人