标签: cpython

`object.__init__` 的位置

object.__init__cpython 存储库位于哪里?__init__我在 中搜索Objects/object.c,但没有给出任何结果。

看来所有不可变数据类型都使用object.__init__,所以我想知道它的实现。

python cpython

1
推荐指数
1
解决办法
78
查看次数

在模块中组合C和Python函数

我有一个C扩展模块,我想添加一些Python实用程序函数.有推荐的方法吗?

例如:

import my_module

my_module.super_fast_written_in_C()
my_module.written_in_Python__easy_to_maintain()
Run Code Online (Sandbox Code Playgroud)

我主要对Python 2.x感兴趣.

python cpython

0
推荐指数
2
解决办法
1044
查看次数

在CLion中查看CPython代码

抱歉,对于一个经验丰富的开发人员来说,这个问题可能看起来很愚蠢:我仍然是C和C ++的新手。

我来自Python / Java开发领域,正在尝试更好地了解C和C ++。我安装了JetBrains CLion并克隆了CPython mercurial存储库。但是,当我开始查看源代码时,我意识到Clion强调了许多似乎有效的构造。例如: 在此处输入图片说明

要么

在此处输入图片说明

据我所知,Clion似乎在Python和C代码的标识样式方面存在问题,但再次,我可能是错的。

如何更改Clion配置以使其正确解析CPython代码?

c cpython clion

0
推荐指数
2
解决办法
786
查看次数

如果新的(订单保留)字典如此惊人,那么列表对象是否应该被避开?

摘要

新的dict是如此惊人,我预计人们将开始使用它们 - 索引作为一切的关键.他们应该吗?如果没有,为什么不呢?

细节

我一直在关注python字典实现的非常令人兴奋的(对我而言)开发/更改.总结:实现已经改变,现在保留了字典的顺序,现在它们更紧凑/更高效:

https://twitter.com/raymondh/status/773978885092323328?lang=en

此外:看起来永久性的订单保存虽然目前无法保证,但不可避免.

我的问题是:鉴于内存效率得到了极大的提高,订单得以保留,并且你得到更快的项目删除/插入a dict,是否有任何充分的理由不使用字典来处理任何项目序列,使用索引作为键?

扩展问题:更改底层序列(listtuple)实现以使用与保留顺序相同的技术dict(再次:使用索引作为键/哈希)是否有意义?

对于那些参加过一些计算机科学课程的人来说,这个问题的答案可能非常明显.我只是一个doofus土木工程师(一点点自嘲幽默对灵魂有益),所以要温柔.

编辑:

我也意识到,dict当前形式的实用性需要扩展一点,以提供所有的铃声/口哨声list.目前缺少的一些东西包括insert方法,reverse方法和切片(当然,功能上的巨大漏洞).但是这些是添加到一个完整的有序dict对象是有意义的事情.

或者,也许添加一个dlist或者ldict,对于只接受密钥的collections模块,以及所有缺少的功能都是有用的.更多的内存使用,但更快的修改.dictintlist

python cpython python-3.x

0
推荐指数
1
解决办法
120
查看次数

CPython 循环优化

有人可以向我解释为什么 CPython 没有像循环不变优化这样的循环优化吗?例如:

for i in range(100000000000):
    pass
Run Code Online (Sandbox Code Playgroud)

cpython 不会跳过循环并需要一些时间来完成执行;这也会发生在 while 循环中。

python optimization cpython compilation

0
推荐指数
1
解决办法
203
查看次数

除了Gogle Cloud Functions中的标准版本之外,是否可以使用其他Python实现?

我是Google Cloud Functions的新手。我想编写一个小型但执行密集的应用程序。我研究了文档,目前尚不清楚在部署到Google Cloud Functions时是否可以使用PyPy或CPython。

pypy cpython python-3.x google-cloud-platform google-cloud-functions

0
推荐指数
1
解决办法
60
查看次数

可以在python中获得“地址值”吗?

在下面,我可以看到在 python 中添加一个整数时,它添加了整数,将该结果值分配给一个新的内存地址,然后将变量设置为指向该内存地址:

>>> a=100
>>> id(a)
4304852448
>>> a+=5
>>> id(a)
4304852608
Run Code Online (Sandbox Code Playgroud)

有没有办法查看(旧)内存地址 4304852448 (0x10096d5e0) 处的值是多少?例如:value_of(0x10096d5e0)

python cpython python-internals

0
推荐指数
1
解决办法
1334
查看次数

如何在 CPython 中获取字符串形式的错误消息

当我PyRun_SimpleString(...)用 C++ 调用并且我的 Python 脚本包含无效语法或错误时,我会收到一条错误消息,该消息会打印到我的控制台。

如何阻止该错误消息刷新到控制台,而是以字符串a 的形式获取该错误消息const char*,并可能以我自己的方式使用该字符串(将其显示为 GUI 文本或其他内容)?

c++ python embed cpython

0
推荐指数
1
解决办法
961
查看次数

创建 N 次类的实例而不将其分配给变量

CPython 3.8

class Class: pass

s = set(
    id(Class())
    for _ in range(5)
)
len(s) == 1  # True
Run Code Online (Sandbox Code Playgroud)

似乎这是一种解释器魔术,它肯定与垃圾收集有关。它是特定于 CPython 的,不受任何标准行为的保证吗?

python cpython

0
推荐指数
1
解决办法
38
查看次数

如何在Python中优雅地表示有限Haskell递归数据结构?

让我们在 Haskell 中使用一些有限递归数据结构。例如。

data Tree = Node Tree Tree | Nil
Run Code Online (Sandbox Code Playgroud)

我需要能够将这样的数据结构从 Haskell 加载到 Python,更改它并将其返回到 Haskell。

有没有一些标准/优雅的方法可以在没有太多痛苦的情况下做到这一点?例如。使用一些目录之类的对象?

python haskell cpython haskell-ffi

0
推荐指数
1
解决办法
134
查看次数

C实现python的len函数的解释

当我遇到len函数的C实现时,我正在阅读有关python内置函数的实现的信息。

static PyObject *
builtin_len(PyObject *module, PyObject *obj)
/*[clinic end generated code: output=fa7a270d314dfb6c input=bc55598da9e9c9b5]*/
{
Py_ssize_t res;

res = PyObject_Size(obj);
if (res < 0) {
    assert(PyErr_Occurred());
    return NULL;
}
return PyLong_FromSsize_t(res);
Run Code Online (Sandbox Code Playgroud)

我无法理解这段代码中发生了什么。我不知道C是如何工作的。有人可以解释这段代码在做什么吗?

我从https://github.com/python/cpython/blob/master/Python/bltinmodule.c获取了代码

编辑:我只是很好奇len函数是如此之快,在这段代码中绊倒了。我只想知道为什么使用函数PyObject_Size检查对象的大小为零,然后使用PyLong_FromSsize_t返回实际大小。

c python cpython python-internals

-7
推荐指数
1
解决办法
213
查看次数