【发布时间】:2017-04-09 16:10:49
【问题描述】:
我正在创建一个将各种曲线拟合到数据的程序。我正在创建许多通过执行以下操作来定义拟合的函数:
for i in range(len(Funcs2)):
func = "+".join(Funcs2[i])
func = func.format("[0:3]","[3:6]")
exec('def Trial1{0}(x,coeffs): return {1}'.format(i, func))
exec('def Trial1{0}_res(coeffs, x, y): return y - Trial1{0}
(x,coeffs)'.format(i))
然后我如何依次调用这些创建的函数的每个函数。目前我正在做以下事情:
for i in range(len(Funcs2)):
exec('Trial1{0}_coeffs,Trial1{0}_cov,Trial1{0}_infodict,Trial1{0}_
mesg,Trial1{0}_flag =
scipy.optimize.leastsq(Trial1{0}_res,x02, args=(x, y),
full_output = True)'.format(i))
在这个循环中,每个创建的函数都会在循环的每次迭代中被调用。问题是我必须继续使用 exec() 来做我想做的事情。这可能是不好的做法,必须有另一种方法来做到这一点。
另外,我不能使用除 numpy、scipy 和 matplotlib 以外的库
抱歉,格式错误。该框只能占用这么长的代码行。
【问题讨论】:
-
Func2是如何定义的? -
Funcs2的内容是什么?我怀疑你的第一个循环首先是一个好主意。 -
Funcs2 是一个元组列表。每个元组包含 3 个字符串。我同意循环是一个坏主意,但我想不出另一种动态创建和命名函数的方法
-
None 老实说,这听起来是个好主意。是什么让你认为你需要动态函数?您只需要带有参数的普通函数。
-
我可以这样做,但是我想创建很多函数,使用普通函数需要很多代码,所以我希望动态地做到这一点
标签: python python-2.7 function for-loop