On Jan 22, 10:55 am, kcrisman <[email protected]> wrote:
> Luiz said:
>
> This worked for me, but it is definitely hackish and cumbersome. You
> basically define the function in a string, exec the string to create
> the function, and then use the function interact, instead using the
> decoration @interact. (I've read it is frowned up, but...)
> # first cell
> fields = ['a','b','c','d','e']
> init_values = [10,15,31,14,-5, 6]
> fields_def = ','.join(['%s=%d' % t for t in zip(fields,init_values)])
> fdef= 'def _(' + fields_def + '):\n' \
> + '\tprint sum([' + ','.join(fields) + '])\n'
> print fdef # just to check
> # second cell
> exec(fdef)
> interact(_)
I think it would be not too difficult to change @interact so that the
following worked:
fields = {'a': 10, 'b': 15, 'c': 31, 'd': 14, 'e': -5}
@interact(fields)
def _(**kwargs):
sum = 0
for fld_name in fields.iterkeys():
sum += kwargs[fld_name]
print sum
(It would be even easier if we picked a different name for this
variant of @interact.)
Would that be enough to satisfy the original requirements? (I haven't
read the original thread, just the above message.)
Can people think of a better name for this variant of @interact?
Carl
--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---