小编Thu*_*nix的帖子

sys.getrefcount()输出的对象引用数量比预期的多吗?

我想知道为什么打印此代码4而不是3。第四参考在哪里?

import sys

def f(a):
    print(sys.getrefcount(a))

a = [1, 2, 3]
f(a)
Run Code Online (Sandbox Code Playgroud)

python reference python-3.x

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

list_iterator类在哪里定义?

我希望看到该类的定义list_iterator。当我尝试使用功能显示其定义时,help出现错误。是否需要导入一个模块才能访问其帮助?

更准确地说,我想知道如何获得对迭代器迭代的可迭代对象的引用。例如:

l = [1,2,3,4,5]
it = iter(l)
print(type(it))   # this prints: list_iterator
# how to get a reference to l using it
Run Code Online (Sandbox Code Playgroud)

我很确定对象it具有对该对象的引用l。这个例子证明了这一点:

import sys
l = [1,2,3,4]
print(sys.getrefcount(l))   # prints 2
it = iter(l)
print(sys.getrefcount(l))   # prints 3 
Run Code Online (Sandbox Code Playgroud)

因此,第三参考肯定来自 it

python iterator python-3.x

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

如何用typedef定义函数类型?

我想知道是否可以使用定义函数类型typedef,我尝试了以下语法:

typedef int (*) (void *, void *) order;
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。错误信息 :expected identifier or '(' before ')' token

c typedef function-declaration

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