Setash schrieb: > 2) Function overloading - is it possible? > > Can I have the following code, or something which acts the same in > python?: > > > def function(a, b) > do things > > def function(a, b, c) > do things only if I get a third argument
Several ways. The simplest and often most feasible is to create a 3-argument function with a default value for its last argument def function(a, b, c=None): if c is None: do things you need to do with the third argument else: do things Alternatively, you may use a *params argument that consumes an arbitrary number of arguments def function(*params): if len(params) == 2: do 3-argument things elif len(params) == 3: do 2-argument things You can of course mix and match *params with preceding parameters. There is a third option - an experimental dynamic function overloading module, see BDFL's weblog <http://www.artima.com/weblogs/viewpost.jsp?thread=155514>: from overloading import overloaded @overloaded def function(a, b): do things @function.register(object, object, object) def function_3(a, b, c): do things with 3 parameters However, I would not recommend this last solution unless you have a really, really weird problem that also heavily depends on the type of parameters. Simply stick to the first one, this will be sufficient for >90% of all cases. Andreas -- http://mail.python.org/mailman/listinfo/python-list