Martin, this option is really appealing for me; I think I would learn using meep one third faster if I used named parameters intensively. Can you please send me a patch for SWIG, if it does not take too much time? I would try to rebuild python-meep myself; maybe I could even make a PPA. Last python-meep version was released one year ago... Filip
2012/2/13, Martin Fiers <[email protected]>: > Dear Dominec, > > This type of code is automatically generated by SWIG. So no need to do > this manually. Just including the kwargs feature should do the trick, > and is the most clean and effective way to include keyword arguments in > python-meep. > > Regards, > Martin Fiers > > > On 13-02-12 14:19, Filip Dominec wrote: >> These are good news! After writing the previous e-mail, I looked on how >> keyword arguments could be processed by the C++ code of the _meep.so >> module backend. This would be probably another way to go. >> (http://docs.python.org/extending/extending.html#keyword-parameters-for-extension-functions) >> However, I have no experience with SWIG and I cannot decide which way >> would be the most clean and effective. >> >> If the python-meep module is improved this way, it would be also useful to >> update the documentation to use the shorter function calls. >> >> Filip >> >> >> On Mon, 13 Feb 2012 14:05:31 +0100 >> Martin Fiers<[email protected]> wrote: >>> Dear Dominec, >>> >>> I am sure this is possible. I use SWIG and I can pass my arguments to >>> the python-interface using this (I define it right after the %module): >>> >>> %feature("kwargs"); >>> >>> By using this feature, C++ function parameter names automatically >>> become the argument name accessible in Python. >>> I can get this in the signature (e.g. in an ODE solver I wrote): >>> >>> def solve_for_dt_src(self, *args, **kwargs): >>> """solve(self, npy_cdouble src, double t, double dt)"""<---- >>> this is due to autodoc (read further on) >>> return _solvers.something_solve_for_dt_src(self, *args, **kwargs) >>> >>> It will check whether the kwargs are correct. So writing >>>>>> solve(dtt=0.3) >>> will fail because it doesn't recognize dtt. >>> >>> In addition, using autodoc can be useful (see >>> http://www.swig.org/Doc1.3/Python.html#Python_nn69): >>> %feature("autodoc", "1"); >>> >>> I hope this helps, >>> >>> Regards, >>> Martin Fiers >>> >>> 2012/2/13 Filip Dominec<[email protected]>: >>>> Hi, >>>> I am learning to simulate electrodynamics in python-meep. I observed >>>> that very often people define a variable and then they pass its value to >>>> a function so that they know what each parameter means. >>>> >>>> Although this is surely better than just providing unnamed numbers, the >>>> correct pythonic way is AFAIK to use parameter names even for >>>> non-keyword parameters, e. g. >>>> >>>>>>> def a(x,y): return x**y >>>>>>> a(10,2) >>>> 100 >>>>>>> a(y=2, x=10) >>>> 100 >>>> >>>> If python-meep programs could be written with all parameters named, it >>>> would increase readability a lot. (I can see that the meep module passes >>>> the argument as dictionary to the compiled backend, which is somehow >>>> processed by SWIG, so this may not be possible at all.) Do you think >>>> this this can be done? >>>> >>>> Filip >>>> >>>> _______________________________________________ >>>> meep-discuss mailing list >>>> [email protected] >>>> http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss >> _______________________________________________ >> meep-discuss mailing list >> [email protected] >> http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss > > > _______________________________________________ > meep-discuss mailing list > [email protected] > http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss > _______________________________________________ meep-discuss mailing list [email protected] http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

