我有以下代码
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) 我试图开发一个列表(称为"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) 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*中.对困惑感到抱歉.