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 年前3Golang 101(Go语言101 中文版) v1.21.a
第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 支持多态(polymorphism)。 使用接口(interface)来实现裝盒(value boxing)和反射(reflection)。 支持指针。 支持函数闭包(closure)。 支持方法。 支持延迟函数调用(defer)。 支持类型内嵌(type embedding)。 支持类型推断(type deduction or type inference)。 内存安全。 自动垃圾回收。 良好的代码跨平台性。0 码力 | 821 页 | 956.82 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 第33章:表达式估值顺序规则 第34章:值复制成本 支持多态(polymorphism)。 使用接口(interface)来实现裝盒(value boxing)和反射(reflection)。 支持指针。 支持函数闭包(closure)。 支持方法。 支持延迟函数调用(defer)。 支持类型内嵌(type embedding)。 支持类型推断(type deduction or type inference)。 内存安全。 自动垃圾回收。 良好的代码跨平台性。0 码力 | 608 页 | 1.08 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 第10章:代码包和包引入 第11章:表达式、语句和简单语句 第12章:基本流程控制语法 第13章:协程、延迟函数调用、以及恐慌和恢复 Go类型系统 第14章:Go类型系统概述 - 精通Go编程必读 第15章:指针 第16章:结构体 第17章:值部 - 不同于继承的类型扩展方式 第25章:非类型安全指针 第26章:泛型 - 如何使用和解读组合类型 第27章:反射 - reflect标准库包中提供的反射支持 一些专题 第28章:代码断行规则 第29章:更多关于延迟函数调用的知识点 第30章:一些恐慌/恢复用例 第31章:详解panic/recover原理 - 也解释了什么是“函数退出阶段” 第32章:代码块和标识符作用域 目录 2 第33章:表达式估值顺序规则 支持多态(polymorphism)。 使用接口(interface)来实现裝盒(value boxing)和反射 (reflection)。 支持指针。 支持函数闭包(closure)。 支持方法。 支持延迟函数调用(defer)。 支持类型内嵌(type embedding)。 支持类型推断(type deduction or type inference)。 内存安全。 自动垃圾回收。 良好的代码跨平台性。0 码力 | 591 页 | 21.40 MB | 1 年前3Object Pascal 参考手册(Ver 0.1)
开发工具下写的程序有几个重要的不同:首先,这是一 个控制台程序,Borland 开发工具通常创建图形界面的程序,因此,你不大可能调用 Writeln(GUI 程序 不能调用 Writeln);而且,整个程序只有一个文件。在一个典型的程序中,程序头,也就是例子中的第 一行,将被放在一个单独的工程文件中。工程文件通常不包含实际的程序逻辑,而只是调用在单元文件 中定义的方法。 A more complicated example(一个稍微复杂的程序) World!'); end. 第一行声明程序叫做 Greeting,它同样是个控制台程序。uses Unit1; 子句告诉编译器,Greeting 包含(引用)一个叫做 Unit1 的单元。最后,程序调用 PrintMessage 过程,并把字符串 ”Hello world!” 传递给它。请注意,PrintMessage 过程是从哪里来的?它是在 Unit1 单元定义的。下面是 Unit1 单元 的源代码,你能把它保存在一个叫 Unit2 in 'Unit2.pas' { Form2 所在的单元 }; {$R *.res} { 这个指示字链接工程的资源文件 } begin { 对 Application 的调用 } Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm20 码力 | 168 页 | 868.25 KB | 1 年前3Python 标准库参考指南 3.10.15
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 10.2 functools --- 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . . . 383 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1781 29.13.3 使用 Signature 对象对可调用对象进行内省 . . . . . . . . . . . . . . . . . . . . . . . . . 1782 29.13.4 类与函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1913 34 Unix 专有服务 1917 34.1 posix --- 最常见的 POSIX 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1917 34.1.1 大文件支持 . . . . . . .0 码力 | 2207 页 | 10.45 MB | 9 月前3Python 标准库参考指南 3.10.15
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 10.2 functools --- 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . 358 10.2.1 partial 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1667 29.13.3 使用 Signature 对象对可调用对象进行内省 . . . . . . . . . . . . . . . . . . . . . . . 1668 29.13.4 类与函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1793 34 Unix 专有服务 1795 34.1 posix --- 最常见的 POSIX 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1795 34.1.1 大文件支持 . . . . . . . . .0 码力 | 2072 页 | 10.39 MB | 9 月前3Python 标准库参考指南 3.8.20
itertools --- 为高效循环而创建迭代器的函数 . . . . . . . . . . . . . . . . . . . . . . . . 315 10.2 functools --- 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . 328 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1720 35 Unix 专有服务 1723 35.1 posix --- 最常见的 POSIX 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1723 35.2 pwd --- 用户密码数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1729 35.9 fcntl ——系统调用 fcntl 和 ioctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1731 35.10 pipes --- 终端管道接口0 码力 | 1927 页 | 9.69 MB | 9 月前3Python 标准库参考指南 3.8.20
itertools --- 为高效循环而创建迭代器的函数 . . . . . . . . . . . . . . . . . . . . . . . . 315 10.2 functools --- 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . 328 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1720 35 Unix 专有服务 1723 35.1 posix --- 最常见的 POSIX 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1723 35.2 pwd --- 用户密码数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1729 35.9 fcntl ——系统调用 fcntl 和 ioctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1731 35.10 pipes --- 终端管道接口0 码力 | 1927 页 | 9.69 MB | 9 月前3Python 标准库参考指南 3.8.20
--- 为高效循环而创建迭代器的函数 . . . . . . . . . . . . . . . . . . . . . . . . . . 337 10.2 functools --- 高阶函数和可调用对象上的操作 . . . . . . . . . . . . . . . . . . . . . . . . . . 351 10.3 operator --- 标准运算符替代函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1837 35 Unix 专有服务 1841 35.1 posix --- 最常见的 POSIX 系统调用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1841 35.2 pwd --- 用户密码数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1848 35.9 fcntl ——系统调用 fcntl 和 ioctl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 35.10 pipes --- 终端管道接口0 码力 | 2052 页 | 9.74 MB | 9 月前3
共 891 条
- 1
- 2
- 3
- 4
- 5
- 6
- 90