python
python学习
C--G
这个作者很懒,什么都没留下…
展开
-
7.进阶—lambda
匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序。lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式(只能为一个)。其实lambda返回值是一个函数的地址,也就是函数对象。lambda [arg1 [,arg2,.....argn]]:expression基础使用def filter(fun, num): new_num = [] for i in num:原创 2021-11-02 17:49:17 · 102 阅读 · 0 评论 -
6.进阶-tqdm-进度条
基于迭代对象运行: tqdm(iterator)import tqdmfor i in tqdm.tqdm(range(10), desc="测试进度条"): time.sleep(1)手动更新import tqdmwith tqdm.tqdm(total=100) as pbar: pbar.set_description("测试进度条") for i in range(10): time.sleep(1) pbar.update(10)原创 2021-11-02 17:48:43 · 566 阅读 · 0 评论 -
5.进阶-yagmail发送邮件
import yagmail# 发件人,授权码,发件服务器ya_obj = yagmail.SMTP(user="[email protected]", password="BWSEBTLSWLFRIUIW", host='smtp.126.com')# 收件人,邮件主题,发送的内容ya_obj.send("[email protected]", "126授权码", "BWSEBTLSWLFRIUIW")...原创 2021-11-02 17:48:17 · 417 阅读 · 0 评论 -
4.进阶-正则表达式(re模块)
基础import reret = re.match("rule", "rule.com.qq")result = ret.group()print(result)print(re.match("t.o", 'two').group())"""[] 匹配[] 内列举的字符\d 匹配数字\D 匹配非数字\s 匹配空白——空格,tab键\S 匹配非空白\w 匹配非特殊字符——a-z,A-Z,0-9,_,汉字\W 匹配特殊字符,非字母,非数字,非汉字\ 转移字符原创 2021-11-02 17:48:00 · 134 阅读 · 0 评论 -
3.进阶-系统实时监控 psutil
import psutil# 获取物理的核心数cpu_count = psutil.cpu_count(logical=False)# 保存cpu使用率,刷新间隔,获取每个核心的使用率cpu_per = psutil.cpu_percent(interval=0.5, percpu=True)# 保存内存信息memory_info = psutil.virtual_memory()# 可以获取硬盘的分区信息dist_info_all = psutil.disk_partitions()#原创 2021-11-02 17:47:46 · 109 阅读 · 0 评论 -
2.进阶-with——管理上下文
import contextlib# 自定义实现文件操作class MyFile(object): def __init__(self, fileName, fileMode): self.fileName = fileName self.fileMode = fileMode # 上文方法 def __enter__(self): self.file = open(self.fileName, self.fileMode)原创 2021-11-02 17:47:25 · 97 阅读 · 0 评论 -
1.进阶-property,类属性装饰器
class Person(object): def __init__(self, age, height): self.__age = age self.__height = height # 把方法(一定有返回值)当作属性去使用 @property def age(self): return self.__age @age.setter def age(self, new_age): if原创 2021-11-02 17:47:09 · 80 阅读 · 0 评论 -
2.数据库-深拷贝浅拷贝
import copy"""普通赋值 list2 = list2 是引用传递,两者指向同一个空间浅拷贝:开辟一块新空间存储,但嵌套情况下,依然是引用传递"""# 普通赋值list1 = [1, 2, 3]print(list1)# 没有嵌套的浅拷贝list2 = copy.copy(list1)list1[0] = 100print(list1, list2)print("------------")#嵌套的浅拷贝"""浅拷贝只开辟一块新空间,list4是新空间,但是l原创 2021-11-02 17:46:52 · 114 阅读 · 0 评论 -
1.数据库-pymysql
import pymysql# 获取链接对象conn = pymysql.connect(host="localhost", port=3306, user='root', password='cgroot', database='pymysqltest', charset='utf8')# 事务conn.begin()# conn.rollback()# 获取游标对象cursor = conn.cursor()sql = 'select原创 2021-11-02 17:46:38 · 64 阅读 · 0 评论 -
5.网络,web服务器——装饰器
装饰器def func_out(func): print("func_out") def func_in(*args, **kwargs): print("验证", args, kwargs) # 默认返回None return func(args, kwargs) return func_indef func_out2(func): print("func_out2") def func_in222(*a原创 2021-10-29 09:23:59 · 65 阅读 · 0 评论 -
4.网络,web服务器——闭包,外层函数变量
def fun_out(data): num = 100 #100 print("外层函数:", data, num) def fun_in(): nonlocal num num += 100 #200 300 print("内层函数:", num) fun_in() #200 print("外层调用内层后:", num) return fun_infunc = fun原创 2021-10-29 09:23:44 · 51 阅读 · 0 评论 -
3.网络,web服务器——udp
udp客户端import socketudp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 端口绑定,默认本地ipudp_socket.bind(("", 9090))udp_socket.sendto("hello".encode("utf8"), ('192.168.238.1', 8080))recv_data, address = udp_socket.recvfrom(1024)"""errorign原创 2021-10-29 09:23:14 · 322 阅读 · 0 评论 -
2.网络,web服务器——文件上传,下载
服务端import sockettcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)tcp_server_socket.bind(("127.0.0.1", 8080))tcp_server_socket.listen(128)client_socket, address = tcp_server_socket.accept()recv_data = client_socket.recv(1024)file原创 2021-10-29 09:23:01 · 157 阅读 · 0 评论 -
1.网络,web服务器——Tcp
Tcp客户端import socket# ip协议版本 AF_INET ipv4# 选择协议 SOCK_STREAM tcp协议tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)tcp_client_socket.connect(("127.0.0.1", 9090))# 转二进制send_data = '123'.encode("utf8")tcp_clie原创 2021-10-29 09:22:48 · 171 阅读 · 0 评论 -
8.进程,线程——协程--可以暂停执行的函数,就行生成器一样
**协程(微线程,纤程):可以暂停执行的函数,就行生成器一样线程和进程的操作是由程序触发系统接口,最后的执行者是系统,协程的操作是程序员意义:多线程应用,cpu通过切片的方式来切换线程间的执行,线程切换时需要耗时(保存状态,下次继续)协程,则只使用一个线程(单线程),在一个线程中规定某个代码块执行顺序使用:不需要cpu的操作(IO)**yield 协程的简单实现-一个线程完成两个任务def work1(): while True: print("正在执行work1...原创 2021-10-29 09:22:26 · 122 阅读 · 0 评论 -
7.进程,线程——生成器
基础# 普通推导式,一次生成5个list1 = [i for i in range(5)]print(list1)# 生成器,一次一个list2 = (i for i in range(5))print(list2, type(list2), next(list2), next(list2))# 创建自己的生成器def generatorList(num): for i in range(num): print("开始生成") #类似return原创 2021-10-29 09:22:02 · 83 阅读 · 0 评论 -
6.进程,线程——迭代器
迭代器基础from collections.abc import Iterable"""判断一个对象是否是一个已知的类型,类似 type()。isinstance() 与 type() 区别:type() 不会认为子类是一种父类类型,不考虑继承关系。isinstance() 会认为子类是一种父类类型,考虑继承关系。如果要判断两个类型是否相同推荐使用 isinstance()。"""result = isinstance("hello", Iterable)print("是否可以迭代",原创 2021-10-29 09:21:41 · 95 阅读 · 0 评论 -
5.进程,线程——进程池
进程池基础import multiprocessingimport timedef work(workNum): print(f"{workNum}working........", multiprocessing.current_process()) time.sleep(1)if __name__ == '__main__': # 创建线程池,指定线程个数 pool = multiprocessing.Pool(5) for i in range(原创 2021-10-29 09:21:17 · 79 阅读 · 0 评论 -
4.进程,线程——进程间通信,消息队列——queue
线程共享全局变量,进程各自拥有一套变量,使用queue中间体进行通信基础import multiprocessing"""使用multiprocessing模块的Queue实现多进程之间的数据传递"""# 创建队列,指定长度queue = multiprocessing.Queue(5)# 放值,实际传入值的数量大于指定长度,队列进入阻塞状态,默认等待队列先取再放入# 阻塞的时间queue.put(1, timeout=3)# 放入值,不等待,如果满,报错queue.put_no原创 2021-10-29 09:19:44 · 76 阅读 · 0 评论 -
3.进程,线程——进程线程总结
进程是系统进行资源分配和调度的一个独立单位线程是进程的一个实体,是cpu调度和分配的基本单位一个程序至少有一个进程,一个进程至少有一个线程线程的划分尺度小于进程(资源比进程少),使得多线程程序并发性高进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率需要频繁创建销毁的优先选择线程线程的切换速度快,所以在需要大量计算,切换频繁时用线程(图像处理,算法处理)因为对cpy系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布的用线程需要更稳定安.原创 2021-10-28 10:51:09 · 68 阅读 · 0 评论 -
2.进程,线程——多线程——IO操作
import threadingg_num = []# 锁mutex = threading.Lock();def dance(*args): print("dance", threading.current_thread()) print("dance收到的参数", args) # for i in range(5): # time.sleep(1) # print("dance", i) # 上锁 mutex.ac原创 2021-10-28 10:50:49 · 128 阅读 · 0 评论 -
1.进程,线程——多进程——实用于多任务
import multiprocessingimport osimport timeg_num = []def dance(*args): print("dance子进程id", os.getpid(), "dance父进程id", os.getppid()) print("dance收到的参数", args) # for i in range(5): # time.sleep(1) # print("dance", i) #原创 2021-10-28 10:50:30 · 57 阅读 · 0 评论 -
6.python基础-异常
基础使用try: # 一般只放一行代码 f = open("test.txt") try: while True: text = f.readline(); if len(text) == 0: break time.sleep(3) print(text) except BaseException as result:原创 2021-10-28 10:50:05 · 54 阅读 · 0 评论 -
5.python基础-文件操作
访问模式r 只读,默认w 只写,存在-删除原有内容,不存在-创建a 追加,存在-末尾追加,不存在-创建文件rb 二进制格式打开一个文件,只读,指针在开头r+ 读写,指针在开头rb+ 二进制格式打开一个文件,读写,指针在开头wb 二进制格式打开一个文件,只写,存在-删除原有内容,不存在-创建w+ 读写,存在-删除原有内容,不存在-创建wb+ 二进制格式打开一个文件,读写,存在-删除原有内容,不存在-创建ab 二进制格式打开一个文件,追加,存在-删除原有内容,不存在原创 2021-10-28 10:49:46 · 54 阅读 · 0 评论 -
4.python基础-列表,元组,字典,集合
列表name_list = ["CG", "Tom", "Rose"]print(name_list[0], name_list[2])# 查print(name_list.index("CG"))print(name_list.count("CG"))print(len(name_list))# 存在print("CG" in name_list)print("CG2" not in name_list)# 增name_list.append("CG1")print(name原创 2021-10-28 10:49:30 · 77 阅读 · 0 评论 -
3.python基础-类的导入
import mathfrom math import sqrt as CGSqrt, pow as CGPowprint(CGSqrt(9), CGPow(2, 4))#普通导入,使用 类名. 调用其方法import day1602#导入类的调用函数方法,可直接使用#同名方法、变量等会覆盖,以后定义的为准,被导入类中使用 __all__ = [],可限制被引用的方法from day1602 import *print(modeTest(1, 2))#无法直接使用modeTe原创 2021-10-28 10:49:16 · 116 阅读 · 0 评论 -
2.python基础-类
基础class WashMachine(): def wash(self): """ self 当前对象-this :return: """ print(f"正在洗衣服,宽度是{self.width},长度是{self.height}") # 魔法方法 _xx_() 特殊功能的函数 def __init__(self, width=200, height=300): self.widt原创 2021-10-28 10:48:53 · 60 阅读 · 0 评论 -
1.python基础-格式化输出,字符串
格式划输出%s 字符串%d 有符号的十进制整数%f 浮点数%c 字符%u 无符号十进制整数%o 八进制整数%x 十六进制整数(小写ox)%X 十六进制整数(大写OX)%e 科学计数法(小写‘e’)%E 科学计数法(大写‘E’)%g %f和%e的简写%G %f和%E的简写int(x,[,base]) 将x转换为一个整数float(x) 将x转换为一个浮点数complex(real[,image]) 创建一个复数,real为实部,image为虚部原创 2021-10-28 10:48:30 · 104 阅读 · 0 评论