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

浙公网安备 33010602011771号