【发布时间】:2018-04-09 11:58:34
【问题描述】:
我碰巧有一些代码使用自省来了解函数的参数是什么,然后根据这些名称执行一些逻辑。例如,我可能会创建一些函数,例如
def func1(a,b):
return a+b
def func2(a):
return a
def func3(b):
return b
并通过使用例如inspect.getargspec(func1) 我可以得到列表 ["a","b"] 返回。通过这种方式,我的代码可以检查某些函数是否具有相同的参数名称。
所以现在,我想动态地创建一堆函数,比如说另一个函数。示意图上我想做例如
def make_funcs():
func_list = []
for i in 10:
def f(x_i): ***here x_i should be x_1, or x_2, etc.
return x_i:
func_list += [f]
return func_list
其中,“x_i”实际上应该是 x_1、x_2 等。因此,当我使用 getargspec 检查这些函数时,结果是“x_1”、“x_2”等。以某种方式设置创建函数后的参数名称。因此,例如,我可以使用通用参数名称创建函数,然后稍后将其更改为所需的特定名称。
有什么方法可以做这些事情吗?
【问题讨论】:
-
getargspec不创建参数。您的问题有点不清楚 - 发布您想要做什么的最小 sn-ps,并标记您要询问的伪代码行。 -
是的,我知道它不会创建参数。它得到了他们。我正在尝试创建函数,以便 getargspec 返回我在问题中指出的结果。我已经标记了我想要更好地控制的伪代码行。
标签: python python-3.x functional-programming introspection