Default parameters
Carl Banks
imbosol at aerojockey.invalid
Fri Dec 19 20:43:00 EST 2003
More information about the Python-list mailing list
Fri Dec 19 20:43:00 EST 2003
- Previous message (by thread): Default parameters
- Next message (by thread): Default parameters
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Paul Rubin wrote: > > > Carl Banks <imbosol at aerojockey.invalid> writes: >> Consider something like this: >> >> def func(param=((1,2),(3,4),(5,6),(7,8))): >> whatever >> >> Do you really want to be building a big-ass nested tuple every time >> the function is called? > > Come on, the compiler can easily recognize that that list is constant. Yes, but that doesn't account for all expensive parameters. What about this: DEFAULT_LIST = ((1,2),(3,4),(5,6),(7,8)) def func(param=DEFAULT_LIST): pass Or this: import external_module def func(param=external_modules.create_constant_object()): pass Or how about this: def func(param={'1': 'A', '2': 'B', '3': 'C', '4': 'D'}): pass The compiler couldn't optimize any of the above cases. >> Python evaluates default args at time of definition mostly for >> performance reasons (and maybe so we could simulate closures before we >> had real closures). My gut feeling is, moving the evaluation to call >> time would be too much of a performance hit to justify it. > > Python takes so many other performance hits for the sake of > convenience and/or clarity that this particular one would be miniscule > by comparison. Well, I don't have any data, but my gut feeling is this would be somewhat more than "miniscule" performance hit. Seeing how pervasive default arguments are, I'm guessing it would be a very significant slowdown if default arguments had to be evaluated every call. But since I have no numbers, I won't say anything more about it. -- CARL BANKS http://www.aerojockey.com/software "If you believe in yourself, drink your school, stay on drugs, and don't do milk, you can get work." -- Parody of Mr. T from a Robert Smigel Cartoon
- Previous message (by thread): Default parameters
- Next message (by thread): Default parameters
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list