>> def create_request(url, headers): >> headers.update(DEFAULT_HEADERS) >> req = urllib2.Request(url, None, headers) >> # ... >> return req >> >> but of course this second example does the Wrong Thing, replacing >> explicit headers with default values. > > There's a second code smell with that: even if it did what you want it > isn't nice to mutate the parameter passed in as headers. What if the caller > wants to reuse the headers again for another call?
Just in case it isn't clear what the problem with that code is: create_request is a function, ie. it returns a value. As such, it shouldn't have any side effects. If it has side effects, it should be considered a procedure, and return None. Regards, Martin -- http://mail.python.org/mailman/listinfo/python-list