PyWart: os.path needs immediate attention!

Robert Kern robert.kern at gmail.com
Sat Jul 30 23:31:22 EDT 2011


On 7/29/11 8:50 PM, Steven D'Aprano wrote:
> Andrew Berg wrote:
>
>>>>>> os.path.exists(path, ignoreSymLnks=False)
>> I actually agree with you on these, which I suppose is interesting.
>
>
> Guido has a rule of thumb: "No constant arguments". Or another way to put
> it: if a function takes an argument which is nearly always a constant
> (usually, but not always, a flag) then it is usually better off as two
> functions.

That's not quite right (although I can never find a direct quote from Guido 
whenever I need to dissect the niceties of the rule). The rule of thumb is more 
like: "No literal arguments." That is, if you are typically going to use True 
and False literals for a flag, it's better to have two functions. However, if 
you have a suite of interoperating functions with the same flag argument, and 
one might reasonably want to pass the same flag value to several different calls 
using a variable, that's a reasonable use.

> But having said that, I'm currently writing a library where nearly all the
> functions violate the No Constant Argument rule. (The API isn't yet stable,
> so I may still change my mind.) Make of that what you will.

I suspect this may be an instance of the latter case.

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
  that is made terrible by our own mad attempt to interpret it as though it had
  an underlying truth."
   -- Umberto Eco




More information about the Python-list mailing list