Call me weird, but sometimes I need functions taking a number of positional arguments, some named arguments with default values, and other named arguments as well. Something like this (which does _not_ work): def function(*args, defarg1=None, defarg2=0, **kw): ... The usual way to program this is: def function(*args, ***kw): if kw.has_key('defarg1'): defarg1 = kw['defarg1'] del kw['defarg1'] else: defarg1 = None if kw.has_key('defarg2'): defarg1 = kw['defarg2'] del kw['defarg2'] else: defarg2 = 0 # ...process the positional arguments in args # ...process the remaining named arguments in kw Doesn't look very pretty IMO, and using the dictionaries' get method doesn't help. I was thinking of a popitem() dictionary method taking (optionally) 2 arguments: the name of the item to pop, and the default value to return if the item is not present in the dictionary: >>> d = {'a': 2, 'b': 3} >>> d.popitem('defarg', 0) 0 >>> d {'a': 2, 'b': 3} >>> d.popitem('a', 100) 2 >>> d {'b': 3} >>> Opinions? Thomas
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4