我想要我写的python代码中的函数名称。我想得到函数的名称,以发送它进行并行处理

时间:2013-03-06 17:40:30

标签: python introspection

我想要用户可以编写和上传的python代码片段中的函数名称。我想得到函数的名称,因为我必须发送它进行并行处理

    # Function definition is here
    def changeme( mylist ):
        """This changes a passed list into this function"""
        mylist.append([1,2,3,4]);
        print "Values inside the function: ", mylist
        return

    # Now you can call changeme function
    mylist = [10,20,30];
    changeme( mylist );
    print "Values outside the function: ", mylist

在这里我知道def名称..但是说它是在一些用户上传的python文件中......我会有另一个脚本来读取上传的文件并返回存在的函数的名称?任何建议如何做到这一点?实际上我做了某种任务分解进行并行处理..所以如果有任何其他方式这样做请告诉我,因为我真的卡住了...谢谢......请不要把它的代码简单地为了有一些代码。

2 个答案:

答案 0 :(得分:1)

鉴于上面的代码作为模块,我可以使用inspect获取函数的名称:

import yourmodule
import inspect

print inspect.getmembers(yourmodule,inspect.isfunction)

这应该为您提供所有功能,而不是名称。您可以轻松地从函数中获取函数名称:

print [f.__name__ for f in inspect.getmembers(yourmodule,inspect.isfunction)]

答案 1 :(得分:0)

我发生的事情是在文件中添加一个包含函数的列表(毕竟它们是其他任何对象),然后在调用文件中导入此列表。所以当这个文件读取文件时,它将有一个可以迭代的可用函数列表。

function_list = [ changeme ]

from uploaded_file import function_list
#iterates over all functions and executes them, it's an example
for e in function_list:
    e() 

请告诉我这是否是您需要的方法。 问候。