At the end of his last post, Steve Bethard wrote: > That said, I find that in most cases, the better option is to use *args > in the original function though. For example: > > def f(arg): > args = aslist(arg) > ... > f(42) > f(['spam', 'eggs', 'ham']) > > could probably be more easily written as: > > def f(*args): > ... > f(42) > f('spam', 'eggs', 'ham') > > Of course this won't work if you have multiple list arguments.
Very interesting, but it also doesn't let you specify a default argument value...however this gave me the idea that it would be possible to use the *args idea to greatly simplify the proposed aslist() function -- when one was needed to allow default argument values and/or for handling multiple list arguments. Namely: def aslist(*args): return list(args) def f(arg=None): args = aslist(arg) ... f() f(42) f('tanstaafl') f(['spam', 'eggs', 'ham']) This seems fairly lean and mean, with no if, isinstance, hasattr, or try/excepts required -- although aslist() might need a check for the single argument of None case, depending on whether it should return [] or something besides [None] in that situation. Best, Martin -- http://mail.python.org/mailman/listinfo/python-list