What is a function parameter =[] for?
Steven D'Aprano
steve at pearwood.info
Mon Nov 23 08:58:55 EST 2015
On Mon, 23 Nov 2015 09:40 pm, BartC wrote:
> On 23/11/2015 07:47, Steven D'Aprano wrote:
>
>> I think it would be cleaner and better if Python had dedicated syntax for
>> declaring static local variables:
>
> Interesting. So why is it that when /I/ said:
>
> > On Mon, 23 Nov 2015 12:21 am, BartC wrote:
> >
> >> But if it's used for static storage, then why not just use static
> >> storage?
>
> You replied with the insulting:
>
> > /head-desk
>
> ?
>
> Maybe it's my turn to bang my head on the desk.
Let me steal^W borrow an idea from Galileo, and present the explanation in
the form of a dialogue between two philosophers of computer science,
Salviati and Simplicio, and a third, intelligent layman, Sagredo.
https://en.wikipedia.org/wiki/Dialogue_Concerning_the_Two_Chief_World_Systems
Salviati: Function defaults can also be used for static storage.
Simplicio: If you want static storage, why not use static storage?
Salviati: Function defaults in Python *are* static storage.
Although they not the only way to get static storage, as closures can
also be used for that purpose, they are surely the simplest way to get
static storage in Python.
Sagredo: Simplest though it might be, surely a reasonable person would
consider that using function parameters for static storage is abuse of the
feature and a global variable would be better?
Salviati: Global variables have serious disadvantages. I will agree that
using function parameters for static storage is something of a code smell,
but good enough for rough and ready code. Nevertheless, it would be good if
Python had dedicated syntax for static storage.
Simplicio: Ah-ha! Gotcha!
Salviati: No, perhaps you missed that I was referring to a hypothetical
future addition to Python, not a current feature. But even if it did exist
today, your statement misses the point that by using function defaults I
*am* using static storage. In effect, you are telling me that rather than
using static storage I should instead use static storage.
--
Steven
More information about the Python-list
mailing list