03 2021 档案

摘要:普通的\要写成\进行转义 字符+表示占有型,匹配+需要转义\+ |表示或操作 匹配字符看书 贪婪匹配 .* 惰性匹配.? 占有匹配.+ 模式标记默认,(?i)忽视大小写,(?x)忽略空格符,(?s).匹配所有字符包括行终结符,(?m)分别匹配一行的开始和结束,(?u)忽视大小写,(?d).^$只识别 阅读全文
posted @ 2021-03-29 20:13 code-G 阅读(48) 评论(0) 推荐(0)
摘要:不可变String String不可变,赋新的值实际就是创建了一个新的对象 +号 对于String,+是拼接的意思,重载过后的+和+= 如果你要再toString方法中使用循环,那么最好自己创建一个StringBUilder对象 无意识的递归 想要用toString方法输出地址,调用this是不行的 阅读全文
posted @ 2021-03-29 20:06 code-G 阅读(40) 评论(0) 推荐(0)
摘要:异常的根类是Throwable对象 try里放可能异常的模块,catch存放异常处理程序 出现异常两种基本模型,终止模型或者恢复模型 自定义异常,自定义类extends Exception类 使用日志输出错误信息,Logger.getLogger 捕获异常后可以重新抛出异常,异常处理模块中throw 阅读全文
posted @ 2021-03-28 23:34 code-G 阅读(97) 评论(0) 推荐(0)
摘要:通过使用泛型可以在编译期防止将错误类型的对象放置到容器中 数组将数字和对象联系起来。它保存类型明确的对象,查询对象不用类型转换,可以保存基本数据类型,数组一旦生成,容量不变 Collection保存单一元素,自动调整尺寸,不能持有基本数据类型,但是自动包装机制会在基本类型和包装类型之间进行转换 Li 阅读全文
posted @ 2021-03-28 17:40 code-G 阅读(49) 评论(0) 推荐(0)
摘要:创建内部类通过方法返回或者外围类对象.new创建 内部类拥有其外围类所有元素的访问权 内部类对象隐式的保存了一个指向外部类对象的引用,表示出对外部类的引用——外部类.this private内部类完全隐藏了实现的细节 外部类可以访问其内部类的private元素 匿名内部类通过将返回值的生成和返回值的 阅读全文
posted @ 2021-03-27 21:24 code-G 阅读(71) 评论(0) 推荐(0)
摘要:Java中所有的方法都是通过动态绑定实现多态的 只有非private的方法才可以被覆盖 静态的方法不具有多态性 构造器实际上就是static方法 初始化的实际过程 在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的零 调用基类构造器 按照声明顺序调用成员的初始化方法 调用导出类的构造器主 阅读全文
posted @ 2021-03-25 21:22 code-G 阅读(29) 评论(0) 推荐(0)
摘要:继承 导出类自动获得基类的所有域和方法 private的域和方法导出类无法继承 创建导出类对象时,该对象会包含一个基类的子对象 Java会自动在导出类的构造器中插入对基类构造器的调用 调用基类构造器必须是你在导出类构造器中要做的第一件事 域的修饰关键字 public可被所有类访问 proteced对 阅读全文
posted @ 2021-03-25 21:14 code-G 阅读(47) 评论(0) 推荐(0)
摘要:抽象类 由抽象方法必须是抽象类 抽象类可以有非抽象方法 接口 接口里的域隐式的是static和final的 一旦某个类实现了接口,这个类就是个普通的类 接口中被定义的方法必须是public的 多重继承使用接口implements,接口继承接口使用extends 使用接口的核心原因是为了能向上转型为多 阅读全文
posted @ 2021-03-25 21:01 code-G 阅读(38) 评论(0) 推荐(0)
摘要:查询 import pymysql if __name__ == '__main__': # 创建连接对象 con = pymysql.connect(host="localhost", port=3306, user="xxxx", password="xxxx", database="db1", 阅读全文
posted @ 2021-03-10 16:54 code-G 阅读(94) 评论(0) 推荐(0)
摘要:一般形式 import re # 在helloworld中匹配hello # 返回匹配的obj对象 obj = re.match('hello','hello world') # 获取匹配结果 group(n)获取第n+1组所匹配的子串 pro = obj.group() print(pro) 匹配 阅读全文
posted @ 2021-03-10 16:21 code-G 阅读(71) 评论(0) 推荐(0)
摘要:complie(pattern[,flags]) 创建模式对象 search(pattern,string[,flags]) 在整个字符串中寻找模式,返回match对象或None match(pattern,string[,flags]) 从字符串的开始处匹配,返回match对象或None find 阅读全文
posted @ 2021-03-10 16:01 code-G 阅读(136) 评论(0) 推荐(0)
摘要:浅拷贝 from copy import * # 无论深浅拷贝都针对可变类型 num1 = 1 num2 = copy(num1) print(id(num1),id(num2)) # 数字。字符串,元组,都没有开辟新空间,都是指向同一个引用地址 list1 = [1,3,4,[1,2]] list 阅读全文
posted @ 2021-03-10 11:04 code-G 阅读(129) 评论(0) 推荐(0)
摘要:推导式创建生成器 genter = (i * 2 for i in range(3)) # value = next(genter) # print(value) # value = next(genter) # print(value) # value = next(genter) # print 阅读全文
posted @ 2021-03-10 10:54 code-G 阅读(87) 评论(0) 推荐(0)
摘要:with语句 # with语句简化文件操作,出错也会关闭文件 with open('abc.txt','r',encoding='utf-8') as file: file_data = file.read() print(file_data) 自写文件管理器 class File(object): 阅读全文
posted @ 2021-03-09 20:50 code-G 阅读(73) 评论(0) 推荐(0)
摘要:property的装饰器方式使用 class Person(object): def __init__(self): self.__age = 0 @property # 把age方法当属性使用,获取age属性时会调用下面的方法 def age(self): print('获取年龄属性') retu 阅读全文
posted @ 2021-03-09 19:34 code-G 阅读(77) 评论(0) 推荐(0)
摘要:class person(): # 初始化要装饰的函数 def __init__(self,fn): self.__fn = fn # 在call方法中使用目标函数 def __call__(self, *args, **kwargs): print('呵呵') self.__fn() @perso 阅读全文
posted @ 2021-03-09 19:24 code-G 阅读(85) 评论(0) 推荐(0)
摘要:装饰器本质上就是一个闭包函数,装饰器有且只有一个参数,参数为要装饰的函数 作用:不改变原函数,而增强其功能 def decorator(fn): def inner(): print('已登录') fn() return inner @decorator def work(): print('可以进 阅读全文
posted @ 2021-03-09 19:17 code-G 阅读(101) 评论(0) 推荐(0)
摘要:闭包的形成条件: 函数嵌套 内部函数使用外部函数的变量或者参数 外部函数返回内部函数。这个使用外部函数变量的内部函数称为闭包 按照容易理解的意思分析一下 func_out()的返回值是func_inner函数,所以func指代的就是func_inner函数 调用func函数,实际上调用的是func_ 阅读全文
posted @ 2021-03-09 18:54 code-G 阅读(90) 评论(0) 推荐(0)
摘要:死锁:两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,程序无法推进 from threading import * lock = Lock() def get_value(index): lock.acquire() list1 = [1,2,3,4] 阅读全文
posted @ 2021-03-09 18:28 code-G 阅读(203) 评论(0) 推荐(0)
摘要:想知道一些原理,建议去学操作系统 from threading import * num = 0 # 创建锁对象 lock = Lock() def task1(): # 上锁 lock.acquire() global num for i in range(1000000): num += 1 p 阅读全文
posted @ 2021-03-09 18:21 code-G 阅读(101) 评论(0) 推荐(0)
摘要:进程是由线程组成的 进程之间全局变量不共享 线程之间资源共享 进程和线程的执行是无序的 # 进程和线程的执行是无序的 from multiprocessing import * from time import * from threading import * def print_info(): 阅读全文
posted @ 2021-03-09 18:16 code-G 阅读(110) 评论(0) 推荐(0)
摘要:全局变量共享 from threading import * from time import * list1 = [] def add_data(): for i in range(3): list1.append(i) print('add',list1) sleep(0.2) def read 阅读全文
posted @ 2021-03-09 18:03 code-G 阅读(481) 评论(0) 推荐(0)
摘要:主线程等待子线程执行完再结束 # 导包 from threading import * from time import * def dance(): print(current_thread()) for i in range(6): print('跳舞...') sleep(0.2) if __ 阅读全文
posted @ 2021-03-09 17:56 code-G 阅读(1160) 评论(0) 推荐(0)
摘要:# 导包 from threading import * from time import * def dance(): print(current_thread()) for i in range(3): print('跳舞...') sleep(0.2) def sing(): print(cu 阅读全文
posted @ 2021-03-09 17:52 code-G 阅读(122) 评论(0) 推荐(0)
摘要:主进程或等待子进程执行完 # 输出over后主进程内容已经执行完了,但是会等待子进程执行完 from multiprocessing import * from time import * def print_info(): for i in range(10): print(i) sleep(0. 阅读全文
posted @ 2021-03-09 17:47 code-G 阅读(1137) 评论(0) 推荐(0)
摘要:from multiprocessing import * list1 = [] def add_data(): for i in range(3): list1.append(i) print('add ', list1) def read_data(): print('read ', list1 阅读全文
posted @ 2021-03-09 17:34 code-G 阅读(275) 评论(0) 推荐(0)
摘要:Python一般使用*arg表示不定长参数,**kwargs表示关键字参数也是不定长的 from multiprocessing import * def print_info(name,age): print(f'{name}, {age}') # args 元组传入 位置参数 # sub_pro 阅读全文
posted @ 2021-03-09 17:31 code-G 阅读(249) 评论(0) 推荐(0)
摘要:使用os模块获取进程编号 # 导包 import multiprocessing import time import os def dance(): print('跳舞子进程编号', os.getpid()) print('跳舞的父进程编号', os.getppid()) for i in ran 阅读全文
posted @ 2021-03-09 17:27 code-G 阅读(863) 评论(0) 推荐(0)
摘要:顺序执行变为异步执行 # 导包 import multiprocessing import time def dance(): for i in range(3): print('跳舞中...') time.sleep(0.2) def sing(): for i in range(3): prin 阅读全文
posted @ 2021-03-09 17:22 code-G 阅读(72) 评论(0) 推荐(0)
摘要:模块实际上就是一个py文件 直接导入 导入指定功能 导入所有功能 # 直接导入模块 import math print(math.sqrt(9)) # 导入模块的功能 此时不用加前缀 from math import sqrt print(sqrt(9)) # 导入模块的所有功能 from math 阅读全文
posted @ 2021-03-09 16:46 code-G 阅读(118) 评论(0) 推荐(0)
摘要:自定义异常类 抛出异常 捕获异常 # 继承异常类Exception class ShortPassword(Exception): def __init__(self,length,min_length): self.length = length self.min_length = min_len 阅读全文
posted @ 2021-03-09 16:30 code-G 阅读(137) 评论(0) 推荐(0)
摘要:异常格式 ''' 格式: try: 可能发生异常的代码 except: 如果出现异常执行的代码 ''' try: file = open('a.txt','r') except: file = open('a.txt','w') file.close() 捕获指定异常或指定多个异常 # 如果指定的异 阅读全文
posted @ 2021-03-09 16:16 code-G 阅读(95) 评论(0) 推荐(0)
摘要:init # 魔法方法是指__xx__ 的方法 具有特殊功能 # init 魔法方法初始化。会自动调用 class Washer(): def __init__(self): self.width = 400 self.height = 500 def print_info(self): print 阅读全文
posted @ 2021-03-09 11:17 code-G 阅读(69) 评论(0) 推荐(0)
摘要:通过将属性和方法前加__变为私有权限,私有的属性和方法不能直接获取,只能通过类内部获取 class Dog(): def __init__(self): # 私有属性 self.__tooth = 22 self.age = 5 # 更改私有属性 def set_tooth(self): self. 阅读全文
posted @ 2021-03-09 10:58 code-G 阅读(137) 评论(0) 推荐(0)
摘要:Dog和Cat都继承Animal,都使用父类的init方法,但是greet方法却是不同的,子类对父类进行了覆盖,还编写了自己的run方法 class Animal(object): def __init__(self,name): self.name = name def greet(self): 阅读全文
posted @ 2021-03-09 10:39 code-G 阅读(81) 评论(0) 推荐(0)
摘要:单继承 # Master继承Object class Master(object): # __init__是个魔法方法,用于初始化 def __init__(self): self.kongfu = '师父功夫' def print_info(self): print(f'{self.kongfu} 阅读全文
posted @ 2021-03-09 10:33 code-G 阅读(103) 评论(0) 推荐(0)
摘要:类的定义用class # Dog(object) 默认继承object,可以不写 class Dog(): # 方法 def work(self): pass 类属性及修改 # 修改类属性只能通过类对象,修改实例对象的值就相当于创建了一个实例对象的属性 class Dog(): tooth = 10 阅读全文
posted @ 2021-03-09 10:22 code-G 阅读(63) 评论(0) 推荐(0)
摘要:flag为1文件名前+Python_ flag为2删除Python_ import os flag = 2 # 获取当前目录下所有文件名并返回一个列表 filelist = os.listdir() # 遍历列表进行重命名 for i in filelist: if flag == 1: new_n 阅读全文
posted @ 2021-03-08 22:27 code-G 阅读(1656) 评论(0) 推荐(0)
摘要:# 引入os模块 import os # 文件重命名(原文件名,文件新名) os.rename('abc.txt','ca.txt') # 删除文件 os.remove('ca.txt') # 创建文件夹 os.mkdir('aa') # 删除文件夹 os.rmdir('aa') # 返回当前文件的 阅读全文
posted @ 2021-03-08 22:22 code-G 阅读(112) 评论(0) 推荐(0)
摘要:例:将文件名稍加修改后复制成一个新的文件 eg:abc.txt → abcpython.txt filename = input('请输入文件名') # 字符串切片,重命名 index = filename.rfind('.') start_name = filename[:index] end_n 阅读全文
posted @ 2021-03-08 22:18 code-G 阅读(99) 评论(0) 推荐(0)
摘要:通过seek方法设定文件指针的光标 # seek(偏移量,起始位置)方法用来改变文件指针的位置 # 0开头 1当前位置 2结尾 # file = open('abc.txt', 'r+') # file.seek(0, 2) # print(file.read()) # file.close() # 阅读全文
posted @ 2021-03-08 21:58 code-G 阅读(1724) 评论(0) 推荐(0)
摘要:读取的方法: read # read(num) 如果传入num,则读取num字节长度的内容,否则读取文件的全部内容 # encoding='utf-8' 设定编码方式是为了防止中文乱码 file = open('list.txt', 'r',encoding='utf-8') print(file. 阅读全文
posted @ 2021-03-08 21:50 code-G 阅读(285) 评论(0) 推荐(0)
摘要:基本操作: 创建文件对象 读或者写(分清读写模式) 关闭对象 # r:如果文件不存在报错,不支持写入,表示只读 file = open('student.txt', 'r') file.write('aaa') file.close() # w:如果文件不存在自动创建,执行写入操作,会覆盖原有的内容 阅读全文
posted @ 2021-03-08 21:38 code-G 阅读(234) 评论(0) 推荐(0)
摘要:# 一个函数接收另一个函数作为参数,这种函数称之为高阶函数 def sum(a, b, f): return f(a) + f(b) print(sum(-2, 5, abs)) print(sum(1.2,1.9,round)) # map对list1中每个元素经过func后再返回 list1 = 阅读全文
posted @ 2021-03-08 19:45 code-G 阅读(81) 评论(0) 推荐(0)
摘要:fn1 = lambda : print('hello world') print(fn1()) fn2 = lambda a, b : a if a>b else b print(fn2(10, 20)) fn3 = lambda a, b , c = 10: a + b + c print(fn 阅读全文
posted @ 2021-03-08 19:24 code-G 阅读(111) 评论(0) 推荐(0)
摘要:Python中使用def关键字定义函数 函数主要由3个部分组成: 函数名 参数 返回值 参数值有4种类型: 位置参数 def message(name, age, gender): print(f'你的名字是{name}, 你的年龄{age}, 你的性别{gender}') # 传入的值如果位置不同 阅读全文
posted @ 2021-03-08 19:10 code-G 阅读(916) 评论(0) 推荐(0)
摘要:例如: set1 = {i**2 for i in range(1,4)} print(set1) list1 = [1, 1, 2] set2 = {i**2 for i in list1} print(set2) 阅读全文
posted @ 2021-03-08 18:51 code-G 阅读(119) 评论(0) 推荐(0)
摘要:list1 = ['name','age','gender'] list2 = ['chris','21','girl'] dict1 = {list1[i]:list2[i] for i in range(len(list1))} print(dict1) 阅读全文
posted @ 2021-03-08 18:48 code-G 阅读(1001) 评论(0) 推荐(0)
摘要:例如: # 快速创建字典,值为键的平方 dict1 = {i: i**2 for i in range(3)} print(dict1) 阅读全文
posted @ 2021-03-08 18:45 code-G 阅读(776) 评论(0) 推荐(0)
摘要:列表推导式有利于我们直接生成一些有规律的列表 示例:创建一个列表,将0-9存储在列表中 list1 = [] # while # i = 0 # while i < 10: # list1.append(i) # i += 1 # print(list1) # for # for i in rang 阅读全文
posted @ 2021-03-08 18:43 code-G 阅读(306) 评论(0) 推荐(0)
摘要:list1 = ['tom', 'jerry'] set1 = {'gzy', 'chris'} tuple1 = (10, 20) # list # print(list(set1)) # print(list(tuple1)) # tuple # print(tuple(list1)) # pr 阅读全文
posted @ 2021-03-08 18:35 code-G 阅读(83) 评论(0) 推荐(0)
摘要:str1 = 'aa' str2 = 'bb' list1 = ['tom', 'jerry'] list2 = ['chris', 'gzy'] t1 = (10, 20) t2 = (100, 200) dict1 = {'name': 'gzy', 'age': 18} dict2 = {'g 阅读全文
posted @ 2021-03-08 18:33 code-G 阅读(70) 评论(0) 推荐(0)
摘要:str1 = 'aa' str2 = 'bb' list1 = ['tom', 'jerry'] list2 = ['chris', 'gzy'] t1 = (10, 20) t2 = (100, 200) dict1 = {'name': 'gzy', 'age': 18} dict2 = {'g 阅读全文
posted @ 2021-03-08 18:31 code-G 阅读(52) 评论(0) 推荐(0)
摘要:Python集合删除通过remove,discard,pop方法 判断元素是否存在使用in,not in方法 s1 = {10, 20, 30, 10, 50} print(s1) # remove 删除指定数据,不存在就报错 # s1.remove(10) # print(s1) # s1.rem 阅读全文
posted @ 2021-03-08 18:17 code-G 阅读(422) 评论(0) 推荐(0)
摘要:集合有无序性 不重复性 # 集合创建的方式 # 空集合只能通过set() 创建 s1 = {10, 20, 30, 10, 50} print(s1) s2 = {} print(type(s2)) s3 = set() print(type(s3)) # 给集合添加单一元素使用add方法 s1.a 阅读全文
posted @ 2021-03-08 18:13 code-G 阅读(1027) 评论(0) 推荐(0)
摘要:dict1 = {'name': 'gzy', 'age': 18, 'gender': '男'} for key in dict1.keys(): print(key) for value in dict1.values(): print(value) for (key,value) in dic 阅读全文
posted @ 2021-03-08 18:04 code-G 阅读(89) 评论(0) 推荐(0)
摘要:dict1 = {'name': 'gzy', 'age': 18, 'gender': '男'} # dict1[键] 如果有该键值则返回相应的值,否则报错 print(dict1['name']) print(dict1['names']) # get(key,arg) 如果有key则返回相应的 阅读全文
posted @ 2021-03-08 18:00 code-G 阅读(4018) 评论(0) 推荐(0)
摘要:dict1 = {'name': 'Tom', 'age': 18, 'gender': '男'} print(dict1) # 修改 dict1['age'] = 21 print(dict1) # 添加 dict1['id'] = 1 print(dict1) # 删除 del dict1['i 阅读全文
posted @ 2021-03-08 16:49 code-G 阅读(407) 评论(0) 推荐(0)
摘要:# 元组内元素不可被修改,嵌套的列表可以 t1 = (10, 20, 30) t2 = (10,) print(type(t1)) print(type(t2)) # 通过下标获取值 print(t1[0]) # index 查找数据 找不到报错 print(t1.index(10)) # len 阅读全文
posted @ 2021-03-08 16:40 code-G 阅读(48) 评论(0) 推荐(0)
摘要:list1 = ['Tom','Jerry','Chris'] list2 = list1.copy() print(list2) for value in list2: print(value) 阅读全文
posted @ 2021-03-08 16:12 code-G 阅读(403) 评论(0) 推荐(0)
摘要:# 替换元素 name_list = ['Tom', 'Lily', 'Jerry'] name_list[1] = 'gzy' print(name_list) # 逆序输出 list1 = [4, 1, 3, 2, 6, 5] list1.reverse() print(list1) # 排序 阅读全文
posted @ 2021-03-08 16:08 code-G 阅读(985) 评论(0) 推荐(0)
摘要:列表删除的方法有del,remove,pop,clear name_list = ['Tom', 'Jerry', 'chris'] # del 删除目标,可直接删除列表对象,也可选中下标删除指定数据 # del name_list del name_list[0] print(name_list) 阅读全文
posted @ 2021-03-08 16:04 code-G 阅读(499) 评论(0) 推荐(0)
摘要:添加方法append,extend,insert name_list = ['Tom', 'Lily', 'Lisa'] # append 追加方法,会将序列完整的加入列表中 name_list.append('gzy') print(name_list) name_list.append([11, 阅读全文
posted @ 2021-03-08 15:57 code-G 阅读(203) 评论(0) 推荐(0)
摘要:通过使用in,not in 判断元素是否在列表中 list1 = ['Tom','Jerry','Chris'] print('Tom' in list1) print('Python' not in list1) print('Jerry' not in list1) 实例:输入一个元素,判断改元 阅读全文
posted @ 2021-03-08 15:49 code-G 阅读(3111) 评论(0) 推荐(0)
摘要:list1 = ['Tom','Jerry','Chris'] # index 查找元素位置 找不到报错 print(list1.index('Tom')) # print(list1.index('gfx')) # count 计数 print(list1.count('Tom')) print( 阅读全文
posted @ 2021-03-08 15:41 code-G 阅读(400) 评论(0) 推荐(0)
摘要:mystr = 'hello world and gzy and java and python' print(mystr.isalpha()) # 是否是纯字母构成 print(mystr.isalnum()) # 是否是字母和数字的组合 print(mystr.isdigit()) # 是否是纯 阅读全文
posted @ 2021-03-08 15:35 code-G 阅读(277) 评论(0) 推荐(0)
摘要:mystr = 'hello world and gzy and java and python' # startswith/endswith(子串。开始位置,结束位置) print(mystr.startswith('hello')) #True print(mystr.startswith('h 阅读全文
posted @ 2021-03-08 15:34 code-G 阅读(146) 评论(0) 推荐(0)
摘要:mystr = 'hello' # ljust(长度,填充符) 左对齐,多于长度填充字符 长度小于字符串长度原样输出 str1 = mystr.ljust(10, '.') print(str1) # 右对齐 str2 = mystr.rjust(10, '.') print(str2) # 居中 阅读全文
posted @ 2021-03-08 15:32 code-G 阅读(150) 评论(0) 推荐(0)
摘要:mystr = ' hello world and gzy and java and python ' # 删除左侧空白字符 str1 = mystr.lstrip() print(str1) # 删除右侧空白字符 str2 = mystr.rstrip() print(str2) # 删除两侧空白 阅读全文
posted @ 2021-03-08 15:30 code-G 阅读(170) 评论(0) 推荐(0)
摘要:mystr = 'hello world and gzy and java and python' # 字符串第一个字符大写 str1 = mystr.capitalize() print(str1) # 字符串中每个单词第一个字符大写 str2 = mystr.title() print(str2 阅读全文
posted @ 2021-03-08 15:28 code-G 阅读(106) 评论(0) 推荐(0)
摘要:mystr = 'hello world and gzy and java and python' # replace 返回一个新对象,原字符串不变,字符串为不可变类型 str1 = mystr.replace('and', 'he') str2 = mystr.replace('and', 'he 阅读全文
posted @ 2021-03-08 15:26 code-G 阅读(167) 评论(0) 推荐(0)
摘要:mystr = 'hello world and chris and java and python' #find(子串,开始位置,结束位置) 找不到返回-1 print(mystr.find('and')) print(mystr.find('and',15)) print(mystr.find( 阅读全文
posted @ 2021-03-08 15:20 code-G 阅读(527) 评论(0) 推荐(0)
摘要:字符串的切片 阅读全文
posted @ 2021-03-08 15:12 code-G 阅读(552) 评论(0) 推荐(0)