小编Joh*_*yDH的帖子

在python中构建一个包含模块和函数的调用图?

我有一堆脚本来执行任务.我真的需要知道项目的调用图,因为它非常令人困惑.我无法执行代码,因为它需要额外的硬件和软件才能执行此操作.但是,我需要理解它背后的逻辑.所以,我需要知道是否有一个工具(不需要任何python文件执行)可以使用模块而不是trace或python解析器构建调用图.我有这样的工具用于C但不用于python.
谢谢.

python static module function call-graph

47
推荐指数
6
解决办法
2万
查看次数

使用字典选择要执行的函数

我正在尝试使用函数式编程来创建包含键和要执行的函数的字典:

myDict={}
myItems=("P1","P2","P3",...."Pn")
def myMain(key):
    def ExecP1():
        pass
    def ExecP2():
        pass
    def ExecP3():
        pass
        ...
    def ExecPn():
        pass  
Run Code Online (Sandbox Code Playgroud)

现在,我已经看到用于在模块中查找已定义函数的代码,我需要执行以下操作:

    for myitem in myItems:
        myDict[myitem] = ??? #to dynamically find the corresponding function
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何列出所有Exec函数,然后使用字典将它们分配给所需的项目?所以最后我会myDict["P1"]() #this will call ExecP1()

我真正的问题是我有大量的这些项目,我创建了一个库来处理它们,所以最终用户只需要调用 myMain("P1")

我认为使用检查模块,但我不确定如何做到这一点.

我有理由避免:

def ExecPn():
    pass
myDict["Pn"]=ExecPn
Run Code Online (Sandbox Code Playgroud)

是我必须保护代码,因为我使用它来提供我的应用程序中的脚本功能.

python dictionary function inspect

40
推荐指数
5
解决办法
8万
查看次数

Python线程覆盖init

我正在使用threading.py,我有以下代码:

import threading  
class MyClass(threading.Thread):  
    def __init__(self,par1,par2):
       threading.Thread.__init__(self)  
       self.var1 = par1  
       self.var2 = par2  
    def run(self):
       #do stuff with var1 and var2 while conditions are met
... 
... 
... 
myClassVar = MyClass("something",0.0)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

18:48:08    57  S E myClassVar = MyClass("something",0.0)  
18:48:08    58  S E File "C:\Python24\Lib\threading.py", line 378, in `__init__`  
18:48:08    59  S E assert group is None, "group argument must be None for now"  
18:48:08    60  S E AssertionError: group argument must be None for now  
Run Code Online (Sandbox Code Playgroud)

我是一个使用python的新手,这是我第一次使用线程...

这里的错误是什么?

谢谢, …

python inheritance multithreading initialization class

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