2019年12月10日

实现Base64解码和命令分发器

摘要: 实现Base64解码 alphabet = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" def base64decode(src:bytes): ret = bytearray() length = len( 阅读全文

posted @ 2019-12-10 15:39 xpc199151 阅读(365) 评论(0) 推荐(0) 编辑

装饰器器应用及用途

摘要: 装饰器的应用 一:实现一个cache装饰器,实现可过期被清除的功能 简化设计,函数的形参定义不包含可变位置参数、可变关键字参数和keyword_only参数, 可以不考虑缓存满了之后的换出问题。 数据类型的选择 缓存的应用场景,是有数据需要频繁查询,且每次查询都需要大量计算或者等待时间之后才能返回结 阅读全文

posted @ 2019-12-10 14:30 xpc199151 阅读(319) 评论(0) 推荐(0) 编辑

2019年12月9日

__slots__和运算符重载中的反向方法

摘要: 问题的引出 都是字典惹的祸 字典为了提升查询效率,必须用空间换时间。 一般来说一个多想,属性多一点,都存储在字典中便于查询,问题不大。 但是如果数百万个对象,那么字典占的就有点大了。 这个时候,能不能把属性字典__dict__省了? python提供了__slots__ class A: x = 1 阅读全文

posted @ 2019-12-09 17:49 xpc199151 阅读(217) 评论(0) 推荐(0) 编辑

python插件化开发

摘要: 动态导入 运行时,根据用户需求(提供字符串),找到模块的资源动态加载起来。 1内建函数__import__() __import__(name,globals = none,locals = none,fromlist = (),level = 0) name,模块名 import语句本质上就是调用 阅读全文

posted @ 2019-12-09 15:51 xpc199151 阅读(1074) 评论(0) 推荐(0) 编辑

python分发包管理

摘要: 为什么使用包管理? python的模块或者源文件直接可以复制到目标项目目录中,就可以导入使用了。 但是为了更多项目调用使用,或者共享给别人,就需要打包,或发布到网络,以便供人使用。目的也是为了复用。 Pypi(python package lndex),公共的模块存储中心,https://pypi, 阅读全文

posted @ 2019-12-09 14:50 xpc199151 阅读(466) 评论(0) 推荐(0) 编辑

2019年12月4日

SocketServer模块

摘要: socket编程过于底层, 编程虽然有套路,但是想要写出健壮的代码还是比较困难的,所以很多语言都对socket底层api进行封装,Python的封装就是——socketserver模块。它是网络服务编程框架,便于企业级快速开发。 类的继承关系 socketserver简化了网络服务器的编写。 他有四 阅读全文

posted @ 2019-12-04 11:24 xpc199151 阅读(309) 评论(0) 推荐(0) 编辑

2019年12月2日

Python多进程

摘要: 由于Python的GIL,多线程未必是cpu密集型程序的好选择。 多进程可以完全独立的进程环境中运行程序, 可以充分地利用多处理器。但是进程本身的隔离带来的数据不共享也是一个问题,而且线程比进程轻量级。 multiprocessing process类 Process类遵循了Thread类的API, 阅读全文

posted @ 2019-12-02 10:53 xpc199151 阅读(173) 评论(0) 推荐(0) 编辑

2019年12月1日

functools模块(partial,lru_cache装饰器)

摘要: partial方法 偏函数,把函数部分的参数固定下来,相当于为部分的参数添加了一个固定的默认值,形成一个新的函数并返回。从partial生成的新函数,是对原函数的封装。 import functools def add(x, y) -> int: return x + y newadd = func 阅读全文

posted @ 2019-12-01 23:26 xpc199151 阅读(328) 评论(0) 推荐(0) 编辑

Python类型注解(inspect模块)

摘要: 函数定义的弊端 Python是动态语言,变量随时可以被赋值,且能赋值为不同的类型,同时Python不是静态编译型语言,变量类型是在运行器决定的,动态语言很灵活,但是这种特性也是弊端。 def add(x, y): return x + y print(add(4, 5)) print(add('he 阅读全文

posted @ 2019-12-01 22:06 xpc199151 阅读(515) 评论(0) 推荐(0) 编辑

2019年11月29日

python线程同步(2)

摘要: Barrier 有人翻译成栅栏,建议使用屏障,可以想象成路障,道闸。 3.2引入python的新功能。 Barrier(parties,action = None,timeout = None):构建Barrier对象,指定参与方数目,timeout是wait方法未指定超时的默认值。 n_waiti 阅读全文

posted @ 2019-11-29 15:13 xpc199151 阅读(232) 评论(0) 推荐(0) 编辑

导航