python中mypy是什么
1、是一种静态检查工具,可以帮助我们像静态语言一样在运行代码之前捕捉到一些错误。然而,当我们写Python代码时,我们应该像静态语言一样写它的类型。这是TypeHints。2、mypy和TypeHints结合,虽然会增加代码量,但是可以使IDE通过类型推断提供更好的代码补全和提示功能。当然也方便项目重构以及提...
2024-01-10python中flake8是什么
1、Flake8是一款由Python官方发布的辅助检测Python代码是否规范的工具。2、Flake8检查规则灵活,支持集成附加插件,具有很强的扩展性。Flake8封装了三个工具PyFlakes、Pep8和NedBatchelder’s McCabe。PyFlakes:静态检查Python代码逻辑错误的工具。Pep8:静态检查PEP8编码风格的工具。NedBatchelder’s McCabe:静态分析Python...
2024-01-10pythonpoetry如何安装依赖
在创建了虚拟环境之后,就可以安装依赖了。1、直接使用poetry的add命令来安装依赖,其中有-dev表示他是开发环境依赖包。开发环境依赖包和生成环境依赖包是非常有益的。➜ poetry add flask➜ poetry add pytest --dev2、pyproject.toml在安装依赖后可以看到变更文件。...[tool.poetry.dependencies]python = "^3.7"Flask...
2024-01-10pythonpoetry创建虚拟环境
1、通过poetry env use <python version>来指定Python版本, 然后创建虚拟环境。Poetry默认使用系统默认的Python环境。默认的虚拟环境配置是存放在/home/{user}/.cache/pypoetry目录的, 可以直接查看配置了解。➜ poetry config --list# poetry使用的缓存目录的路径cache-dir = "/home/so1n/.cache/pypoetry"experimental.new-installer = tru...
2024-01-10pythonpoetry如何创建项目
1、可以通过命令poetrynew创建项目手脚架。➜ poetry new example➜ tree.└── example ├── example │ └── __init__.py ├── pyproject.toml ├── README.rst └── tests ├── __init__.py └── test_example.py 3 directories, 5 files2、Poetry创建了ex...
2024-01-10python如何制作探针模块
1、涉及aiomysql模块,在MetaPathFinder.find_module中只需要处理aiomysql模块。其他先忽略,然后确定需要替换aiomysql的功能。从业务上来说,一般我们只需要cursor.execute、cursor.fetchone、cursor.fetchall、cursor.executemany这些主要操作。2、先cursor.execute的源代码(其他同理),调用self.nextset的方法。完成上一个请求的数据...
2024-01-10python探针如何实现
1、探针importhook的功能可以通过sys.meta_path来实现。2、当执行import相关操作时,import相关库将根据sys.meta_path定义的对象进行更改。sys.meta_path中的对象需要实现find_module方法。这种find_module方法返回None或实现load_module方法的对象。我们可以通过这个对象在import中替换一些图书馆的相关方法。简单用法如下...
2024-01-10python有序Dict的原理
1、python3.7之后,Dict采用新的数据结构,使新Dict的内存占用也比老款Dict少。2、新Dict在遍历时与插入顺序一致,具体实现是初始化会生成两个数组,插入值时,在数组二中添加当前数据。获得当前添加数据所在的下标A,然后对key进行哈希取模计算下标B,最后将下标B的值更新为A。实例# 初始的结构# -...
2024-01-10python链表法的优缺点
1、优点,方便删除记录,直接处理数组对应下标的子数组。平均搜索速度快。如果有冲突,只需要查询子数组。2、缺点,使用指针导致查询速度较慢,内存占用可能较高,不适合序列化。而开放式寻址法的优缺点与链表法相反。因为Python的一切都是基于Dict的,都需要序列化,所以选择了开放式寻址法...
2024-01-10高性能C++HTTP客户端的原理
Workflow是个异步调度框架,因此这个任务发出之后,不会阻塞当前线程,外加内部自带的连接复用,从根本上保证了我们的Http Client的高性能。1、创建Http任务上述demo可以看到,请求是通过发起一个Workflow的Http异步任务来实现的,创建任务的接口如下:WFHttpTask *create_http_task(const std::string& url, ...
2024-01-10