小编Air*_*oon的帖子

python - 获取当前模块中所有函数的列表.检查当前模块不起作用?

我有以下代码

fset = [ obj for name,obj in inspect.getmembers(sys.modules[__name__]) if inspect.isfunction(obj) ]

def func(num):
    pass

if __name__ == "__main__":
    print(fset)
Run Code Online (Sandbox Code Playgroud)

版画

[]
Run Code Online (Sandbox Code Playgroud)

不过这个

def func(num):
    pass

fset = [ obj for name,obj in inspect.getmembers(sys.modules[__name__]) if inspect.isfunction(obj) ]

if __name__ == "__main__":
    print(fset)
Run Code Online (Sandbox Code Playgroud)

版画

[<function func at 0x7f35c29383b0>]
Run Code Online (Sandbox Code Playgroud)

那么如何将fset列为当前模块中所有函数的列表,其中fset定义在所有函数的顶部?

编辑1:我想做的是

def testall(arg):
    return any(f(arg) for f in testfunctions)

def test1(arg):
    #code here
    # may call testall but wont call anyother test*

def test2(arg):
    #code here
    # may call testall but wont …
Run Code Online (Sandbox Code Playgroud)

python

12
推荐指数
3
解决办法
7709
查看次数

Cant Solve"inc()需要1个位置参数但是2个被给出"

我试图开发一个列表(称为"l")的两个自然数(不包括0)的元组列表,如"a"可以是"l"的成员,如果len(a)== len和每个成员(让我们调用p)"a",p [0] <= max和p [1] <= max

例如poslist_all(max = 2,len = 1)

[[(1,1)],[(1,2)],[(2,1)],[(2,2)]]
Run Code Online (Sandbox Code Playgroud)

和poslist_all(2,2)

[[(1,1),(1,1)],[(1,1),(1,2)],[(1,1),(2,1)],[(1,1),(2,2)],...,[(2,2),(1,1)],[(2,2),(1,2)],[(2,2),(2,1)],[(2,2),(2,2)]]
Run Code Online (Sandbox Code Playgroud)

所以我试图使该列表成为一个迭代器并提出这个代码,

class poslist_all:
    def __init__(self,max,len):
        self.max = max
        self.len = len
        self.iposlist = len*[(1,1)]
    def __iter__(self):
        return self
    def __next__(self):
        ml = self.maxlist()
        if ml:
            if ml[0] == 0:
                raise StopIteration
            else:
                toinc = ml[0]-1
                self.inc(ml[0] - 1)
                for i in range(ml[0],self.len-1):
                    self.iposlist[i] = (1,1)
                return self.iposlist
        else:
            self.inc(self.len - 1)
            return self.iposlist
    def maxlist(self):
        return [x for x,y in enumerate(self.iposlist) if y == …
Run Code Online (Sandbox Code Playgroud)

python

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

c - 在一个条件下混合赋值和free()?

typedef char* string;
int func1(string s);
char* func2(); // returns a new memory/

if(func1(func2()) == 4)
{
// code
}
Run Code Online (Sandbox Code Playgroud)

假设只在条件中需要func2().由于我需要释放新分配的内存,我如何在相同的行中释放它(即具有相同的条件或paranthesis)?我的动机是保持代码清洁.

编辑1.是的,它是交流问题.使用"string"类型对我来说是错误的,因为我总是将它键入到char*中.对困惑感到抱歉.

c

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

标签 统计

python ×2

c ×1