首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HPy - 为 Python 扩展提供更优秀的 C API

    官方的 Python/C API 是针对 CPython 的实现的:公开了许多内部细节,使得 API 实现难度较大;而且,如果要为 PyPy、GraalPython、Jython、IronPython...HPy 介绍 HPy 提供了一个新的 API,以用 C 扩展 Python,有零开销、更快速、方便调试、通用的二进制文件(不用任何修改,可在 CPython、PyPy、GraalPython 等解释器上直接加载...换句话说,如果您做过 C 中嵌入 Python 的开发,必定熟悉这行代码: #include Python.h> 现在,如果你使用 HPy,则可以替换为: #include ...更好的 API:标准的 Python/C API 具有其产生时代的特性限制,而 HPy 的设计可以克服一些限制。让扩展 API 更加一致,更易写易读,并且可使 bug 更易于暴露。...首先,我们用标准 Python/C 扩展方式实现 命名文件为 hello_old.c: #include Python.h> static PyObject* add(PyObject* self,

    99410

    Python C API统一槽系统:PySlot提案详解

    背景Python 3.14的C API包含两个可扩展的结构体,用于在创建新对象时提供信息:PyType_Spec 和 PyModuleDef。每个都有一系列C API函数用于从中创建Python对象。...一种解决方法是检查Python版本,并省略早于当前解释器的槽。这对用户来说很麻烦。它也限制了C API可能的非CPython实现,阻止它们“挑选”较新CPython版本中引入的功能。...对于更复杂的用例,例如多个Python版本之间的兼容性,或模板化/自动生成的槽数组,以及C API的非C用户,可以写出槽结构体定义。...一个仅包含初始创建所需信息的小型结构体,其他信息随后添加(通过专用函数调用或Python级别的setattr)。这种设计使得添加/废弃/调整所需信息变得麻烦;增加了扩展和解释器之间的API调用次数。...该提案不使用位域和枚举,因为它们的内存表示依赖于编译器,在使用C以外的语言使用API时会导致问题。结构的布局假设类型的对齐方式与其大小匹配。

    10210

    如果我去参加前端面试,我应该能做出大圣老师的这道题...

    我分析无非就是考察了三点: 最最基础的浏览器调试能力 算法能力 基础的 JavaScript API 应用 刚和爸妈打完球回来,那我就做做这道题。...这里未必要用到递归,我用的是宽度优先搜索 BFS ,简单一个队列就能实现 值得一提的是,我近一个月里写了基于 C++ 、Python 、 JavaScript/TypeScript 、 Scala/Java...我平时做算法题都是用 C++ ,所以这里方法的名称就都尽量接近 C++ 的 std::queue 。 接下来咱们写 BFS 就行了!...两行,这里有一个问题: dict = {} 中,对于未声明过的键值,如果直接调用运算,会报错 dict[未声明的键值] +=1 // 报错!...而 js 又不是 Python ,没有 setdefault 给我们用比如 dict.setdefault(键值, 0); dict[键值] += 1 js 也不是 C++ ,直接默认未出现过的键值的值为

    62130

    浅谈 Node.js 模块机制及常见面试问题解答

    Node.js 模块机制采用了 Commonjs 规范,弥补了当前 JavaScript 开发大型应用没有标准的缺陷,类似于 Java 中的类文件,Python 中的 import 机制,Node.js...Node.js 的 http、buffer、fs 等,底层也是调用的内建模块 (C/C++)。...c++ 源码文件,内建模块 ├── test 单元测试 ├── tools 编译时用到的工具 ├── doc api...Node.js 提供了 require.cache API 查看已缓存的模块,返回值为对象,为了验证,这里做一个简单的测试,如下所示: 新建 test-module.js 文件 这里我导出一个变量和一个方法...看以下例子 // a.js console.log('a模块start'); exports.test = 1; undeclaredVariable = 'a模块未声明变量' const b =

    1.6K20

    浅谈 Node.js 模块机制及常见面试问题解答

    Node.js 模块机制采用了 Commonjs 规范,弥补了当前 JavaScript 开发大型应用没有标准的缺陷,类似于 Java 中的类文件,Python 中的 import 机制,Node.js...,参考正文模块加载机制 “文件模块“ 模块的分类 系统模块 C/C++ 模块,也叫 built-in 内建模块,一般用于 native 模块调用,在 require 出去 native 模块,在开发中使用的...Node.js 的 http、buffer、fs 等,底层也是调用的内建模块 (C/C++)。...c++ 源码文件,内建模块 ├── test 单元测试 ├── tools 编译时用到的工具 ├── doc api...Node.js 提供了 require.cache API 查看已缓存的模块,返回值为对象,为了验证,这里做一个简单的测试,如下所示: 新建 test-module.js 文件 这里我导出一个变量和一个方法

    89420
    领券