7-韦泽华-一键将C和Cpp代码转换为Python能调用的代码一键将 C/C++ 代码转换为 Python 能调用的代码 韦泽华 大家以前都是怎样调用C++代码呢? 1. Cython 2. boost.python/pybind11 3. ctypes 先不讨论这些工具的优劣 先给大家介绍一下 如何使用c2py来调用C++代码 在此之前给大家看一下要调用的C++代码源文件 • 我肯定是会拿上期所的API来作示范: (看一眼就好了) so)文件 • 第二步,调用代码,并享受完备的type hint。 与其他工具的用法进行一下比较? 与pybind11进行比较 • c2py:两个命令 • pybind11:1137行代码? • 不, 其实是11,376行代码: 跟pybind11比算个什么事?根本 不在一个次元! 要比就和不需要写C++代码的工 具比! 与ctypes进行比较 • c2py:调用代码,并享受type hint。 hint。 • ctypes:调用代码?? 如果把调用C++代码当作吃饭,那么: 工具 科技等级 手撸Cython 手撕猎物;钻木取火 Boost.python/pybind11 用猎枪打猎;在现代化的厨房里做菜 ctypes 在某个便利店里买吃的。(只卖番茄炒蛋) c2py 外卖app 所以 调用C++,认准 现代化的外卖app:c2py https://github.com/nanoric/c2py0 码力 | 12 页 | 1.24 MB | 1 年前3
邓良驹 编写更安全的Python代码编写安全的Python代码 邓良驹 2019.10.19 思考题 if user.balance >= product.price: user.balance -= product.price ? 目录 CONTENTS 常见不安全代码 代码检查的工具 总结:如何规避风险 常见不安全代码 小心 eval 应对: 在生产环境中,任何情况下都不要使用eval。 import sys 更不要以为 PyPI 源中的包就不存在恶意代码; 不要以为你import的就是你实际要import的*; 每个 PyPI 包都可能存在前述所有风险点, 有的甚至是故意、恶意为之。 应对: 谨慎选择第三方 PyPI 包,尽量少导入 PyPI 包; 利用 https://pyup.io/ 等服务保持检查和更新依赖; 利用 Chef InSpect 落实代码安全规范的检查。 *参考资料:“驹说码事” *参考资料:“驹说码事” 《如何import一个不存在的对象》 https://mp.weixin.qq.com/s/0_ivKVDU-nKf3r-c96sqrA 利用 Bandit 检查代码 记不住那么多点?交给Bandit! https://github.com/PyCQA/bandit https://bandit.readthedocs.io/en/latest/ B101 assert_used B1020 码力 | 18 页 | 988.40 KB | 1 年前3
PyWebIO v1.1.0 使用手册要求不高的应用。 使用手册 1 PyWebIO, 发布 1.1.0 2 使用手册 CHAPTER1 特性 • 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 • 非声明式布局,布局方式简单高效 • 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为 Web 服务 • 支持整合到现有的 Web 服务,目前支持与 Flask、Django、Tornado、aiohttp 框架集成 bmi() 如果没有使用 PyWebIO,这只是一个非常简单的脚本,而通过使用 PyWebIO 提供的输入输出函数,你可以 7 PyWebIO, 发布 1.1.0 在浏览器中与代码进行交互: 将上面代码最后一行对 bmi() 的直接调用改为使用pywebio.start_server(bmi, port=80) 便可以 在 80 端口提供 bmi() 服务 ( 在线 Demo )。 Web 开发,你可能对接下来描述的 PyWebIO 的用法感到不太习惯,不同于传统 Web 开发的后 端实现接口、前端进行展示交互的模式,在 PyWebIO 中,所有的逻辑都通过编写 Python 代码实现。 你可以按照编写控制台程序的逻辑编写 PyWebIO 应用,只不过这里的终端变成了浏览器。通过 PyWebIO 提 供的命令式 API,你可以简单地调用 put_text 、put_image0 码力 | 98 页 | 1.73 MB | 1 年前3
PyWebIO v1.2.2 使用手册要求不高的应用。 使用手册 1 PyWebIO, 发布 1.2.2 2 使用手册 CHAPTER1 特性 • 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 • 非声明式布局,布局方式简单高效 • 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为 Web 服务 • 支持整合到现有的 Web 服务,目前支持与 Flask、Django、Tornado、aiohttp 框架集成 '__main__': bmi() 如果没有使用 PyWebIO,这只是一个非常简单的脚本,而通过使用 PyWebIO 提供的输入输出函数,你可以 在浏览器中与代码进行交互: 7 PyWebIO, 发布 1.2.2 将上面代码最后一行对 bmi() 的直接调用改为使用pywebio.start_server(bmi, port=80) 便可以 在 80 端口提供 bmi() 服务 ( 在线 Web 开发,你可能对接下来描述的 PyWebIO 的用法感到不太习惯,不同于传统 Web 开发的后 端实现接口、前端进行展示交互的模式,在 PyWebIO 中,所有的逻辑都通过编写 Python 代码实现。 你可以按照编写控制台程序的逻辑编写 PyWebIO 应用,只不过这里的终端变成了浏览器。通过 PyWebIO 提 供的命令式 API,你可以简单地调用 put_text 、put_image0 码力 | 102 页 | 1.69 MB | 1 年前3
PyWebIO v1.2.3 使用手册要求不高的应用。 使用手册 1 PyWebIO, 发布 1.2.3 2 使用手册 CHAPTER1 特性 • 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 • 非声明式布局,布局方式简单高效 • 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为 Web 服务 • 支持整合到现有的 Web 服务,目前支持与 Flask、Django、Tornado、aiohttp 框架集成 '__main__': bmi() 如果没有使用 PyWebIO,这只是一个非常简单的脚本,而通过使用 PyWebIO 提供的输入输出函数,你可以 在浏览器中与代码进行交互: 7 PyWebIO, 发布 1.2.3 将上面代码最后一行对 bmi() 的直接调用改为使用pywebio.start_server(bmi, port=80) 便可以 在 80 端口提供 bmi() 服务 ( 在线 Web 开发,你可能对接下来描述的 PyWebIO 的用法感到不太习惯,不同于传统 Web 开发的后 端实现接口、前端进行展示交互的模式,在 PyWebIO 中,所有的逻辑都通过编写 Python 代码实现。 你可以按照编写控制台程序的逻辑编写 PyWebIO 应用,只不过这里的终端变成了浏览器。通过 PyWebIO 提 供的命令式 API,你可以简单地调用 put_text 、put_image0 码力 | 102 页 | 1.67 MB | 1 年前3
PyWebIO v1.2.2 使用手册L和JS的相关知识; PyWebIO还可 以方便地整合进现有的Web服务。非常适合快速构建对UI要求不高的应用。 特性 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 非声明式布局,布局方式简单高效 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为Web服务 支持整合到现有的Web服务,目前支持与Flask、Django、Tornado、aiohttp 框架集成 同时支持基于线程的执行模型和基于协程的执行模型 __name__ == '__main__': bmi() 如果没有使用PyWebIO,这只是一个非常简单的脚本,而通过使用PyWebIO提 供的输入输出函数,你可以在浏览器中与代码进行交互: 将上面代码最后一行对 bmi() 的直接调用改为使用 pywebio.start_server(bmi, port=80) 便可以在80端口提供 bmi() 服务( 在线Demo [http://pywebio- guide 如果你接触过Web开发,你可能对接下来描述的PyWebIO的用法感到不太习 惯,不同于传统Web开发的后端实现接口、前端进行展示交互的模式,在 PyWebIO中,所有的逻辑都通过编写Python代码实现。 你可以按照编写控制台程序的逻辑编写PyWebIO应用,只不过这里的终端变成 了浏览器。通过PyWebIO提供的命令式API, 你可以简单地调用 put_text 、 put_image 、0 码力 | 119 页 | 7.41 MB | 1 年前3
PyWebIO v1.1.0 使用手册L和JS的相关知识; PyWebIO还可 以方便地整合进现有的Web服务。非常适合快速构建对UI要求不高的应用。 特性 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 非声明式布局,布局方式简单高效 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为Web服务 支持整合到现有的Web服务,目前支持与Flask、Django、Tornado、aiohttp 框架集成 同时支持基于线程的执行模型和基于协程的执行模型 __name__ == '__main__': bmi() 如果没有使用PyWebIO,这只是一个非常简单的脚本,而通过使用PyWebIO提 供的输入输出函数,你可以在浏览器中与代码进行交互: 将上面代码最后一行对 bmi() 的直接调用改为使用 pywebio.start_server(bmi, port=80) 便可以在80端口提供 bmi() 服务( 在线Demo [http://pywebio- guide 如果你接触过Web开发,你可能对接下来描述的PyWebIO的用法感到不太习 惯,不同于传统Web开发的后端实现接口、前端进行展示交互的模式,在 PyWebIO中,所有的逻辑都通过编写Python代码实现。 你可以按照编写控制台程序的逻辑编写PyWebIO应用,只不过这里的终端变成 了浏览器。通过PyWebIO提供的命令式API, 你可以简单地调用 put_text 、 put_image 、0 码力 | 119 页 | 7.41 MB | 1 年前3
PyWebIO v1.2.3 使用手册L和JS的相关知识; PyWebIO还可 以方便地整合进现有的Web服务。非常适合快速构建对UI要求不高的应用。 特性 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 非声明式布局,布局方式简单高效 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为Web服务 支持整合到现有的Web服务,目前支持与Flask、Django、Tornado、aiohttp 框架集成 同时支持基于线程的执行模型和基于协程的执行模型 __name__ == '__main__': bmi() 如果没有使用PyWebIO,这只是一个非常简单的脚本,而通过使用PyWebIO提 供的输入输出函数,你可以在浏览器中与代码进行交互: 将上面代码最后一行对 bmi() 的直接调用改为使用 pywebio.start_server(bmi, port=80) 便可以在80端口提供 bmi() 服务( 在线Demo [http://pywebio- guide 如果你接触过Web开发,你可能对接下来描述的PyWebIO的用法感到不太习 惯,不同于传统Web开发的后端实现接口、前端进行展示交互的模式,在 PyWebIO中,所有的逻辑都通过编写Python代码实现。 你可以按照编写控制台程序的逻辑编写PyWebIO应用,只不过这里的终端变成 了浏览器。通过PyWebIO提供的命令式API, 你可以简单地调用 put_text 、 put_image 、0 码力 | 119 页 | 7.44 MB | 1 年前3
PyWebIO v1.3.1 使用手册要求不高的应用。 使用手册 1 PyWebIO, 发布 1.3.1 2 使用手册 CHAPTER1 特性 • 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 • 非声明式布局,布局方式简单高效 • 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为 Web 服务 • 支持整合到现有的 Web 服务,目前支持与 Flask、Django、Tornado、aiohttp、FastAPI(Starlette) '__main__': bmi() 如果没有使用 PyWebIO,这只是一个非常简单的脚本,而通过使用 PyWebIO 提供的输入输出函数,你可以 在浏览器中与代码进行交互: 7 PyWebIO, 发布 1.3.1 将上面代码最后一行对 bmi() 的直接调用改为使用pywebio.start_server(bmi, port=80) 便可以 在 80 端口提供 bmi() 服务 ( 在线 Web 开发,你可能对接下来描述的 PyWebIO 的用法感到不太习惯,不同于传统 Web 开发的后 端实现接口、前端进行展示交互的模式,在 PyWebIO 中,所有的逻辑都通过编写 Python 代码实现。 你可以按照编写控制台程序的逻辑编写 PyWebIO 应用,只不过这里的终端变成了浏览器。通过 PyWebIO 提 供的命令式 API,你可以简单地调用 put_text 、put_image0 码力 | 111 页 | 1.70 MB | 1 年前3
PyWebIO v1.3.3 使用手册要求不高的应用。 使用手册 1 PyWebIO, 发布 1.3.3 2 使用手册 CHAPTER1 特性 • 使用同步而不是基于回调的方式获取输入,代码编写逻辑更自然 • 非声明式布局,布局方式简单高效 • 代码侵入性小,旧脚本代码仅需修改输入输出逻辑便可改造为 Web 服务 • 支持整合到现有的 Web 服务,目前支持与 Flask、Django、Tornado、aiohttp、FastAPI(Starlette) '__main__': bmi() 如果没有使用 PyWebIO,这只是一个非常简单的脚本,而通过使用 PyWebIO 提供的输入输出函数,你可以 在浏览器中与代码进行交互: 7 PyWebIO, 发布 1.3.3 将上面代码最后一行对 bmi() 的直接调用改为使用pywebio.start_server(bmi, port=80) 便可以 在 80 端口提供 bmi() 服务 ( 在线 Web 开发,你可能对接下来描述的 PyWebIO 的用法感到不太习惯,不同于传统 Web 开发的后 端实现接口、前端进行展示交互的模式,在 PyWebIO 中,所有的逻辑都通过编写 Python 代码实现。 你可以按照编写控制台程序的逻辑编写 PyWebIO 应用,只不过这里的终端变成了浏览器。通过 PyWebIO 提 供的命令式 API,你可以简单地调用 put_text 、put_image0 码力 | 111 页 | 1.70 MB | 1 年前3
共 176 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18













