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 "Permission denied!" user.balance += 100 应对: Assert 语句不应用于业务逻辑条件检查,只应用于程序员之间的 沟通,如单元测试、数据边界检查、API调用约束说明等。 小心 pickle import os import pickle class ShellExp: def __reduce__(self): return (os.system "__main__": shellcode = pickle.dumps(ShellExp()) pickle.loads(shellcode) 应对: 绝不对不可信/未认证数据进行unpickle,使用更安全的JSON 或YAML做序列化。必须使用pickle时在沙盒环境执行。 小心 PyYAML 应对: 使用yaml.safe_load,必要时编写自定义 Loader 做更严格的检查。 对不可信来源的序列化检查后操作。0 码力 | 18 页 | 988.40 KB | 1 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 发布,C扩展等等),在使用该系统后得以保持,拥有 工业级的可靠性和稳定性 6 如何工作? Python Import 忽略Cache Loader, 只对源代码Loader 重写get_data方法 调用父get_data方法, 拿到源代码 moshmosh.extension. perform_extension 源码变换 扩展的语法和语义 并非naïve的,不卫生的 源码变换; 其作用是对 moshmosh/extensions/pattern_matching pin(val): 用作用域内的值val进行比较的模式 and: 满足多个解构规则的组合模式 or: 满足其中一个解构规则的组合模式 A(a, …): 调用A.__match__进行模式匹配 isinstance(type): 检查类型的pattern (a, *b, c): 匹配tuple [a, *b, c]: 匹配列表 演示 Pattern-Matching0 码力 | 43 页 | 10.71 MB | 1 年前3
Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.14.8 省略符对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.14.9 未实现对象 ——高阶函数,以及可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . 393 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 10.3 operator --- 标准运算符对应函数 . . . . . . . . . . . . . . . . . . . . . . 402 10.3.1 将运算符映射到函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 10.3.2 原地运算符 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.14.8 省略符对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.14.9 未实现对象 ——高阶函数,以及可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . 389 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 10.3 operator --- 标准运算符对应函数 . . . . . . . . . . . . . . . . . . . . . . 398 10.3.1 将运算符映射到函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 10.3.2 原地运算符 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2242 页 | 11.73 MB | 9 月前3
Python 标准库参考指南 3.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.14.8 省略符对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.14.9 未实现对象 ——高阶函数,以及可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . 380 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 10.3 operator --- 标准运算符对应函数 . . . . . . . . . . . . . . . . . . . . . . 390 10.3.1 将运算符映射到函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 10.3.2 原地运算符 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.14.8 省略符对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.14.9 未实现对象 ——高阶函数,以及可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . 380 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 10.3 operator --- 标准运算符对应函数 . . . . . . . . . . . . . . . . . . . . . . 390 10.3.1 将运算符映射到函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394 10.3.2 原地运算符 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.13.8 省略符对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.13.9 未实现对象 --- 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . 358 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . 366 10.3.1 将运算符映射到函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370 10.3.2 原地运算符 . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2072 页 | 10.39 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.13.8 省略符对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.13.9 未实现对象 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . . . 383 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . 392 v 10.3.1 将运算符映射到函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 10.3.2 原地运算符 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.11.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.13.8 省略符对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.13.9 未实现对象 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . . . 402 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . . . 412 10.3.1 将运算符映射到函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 10.3.2 原地运算符 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2399 页 | 11.19 MB | 9 月前3
共 171 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18













