Path: csiph.com!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Marko Rauhamaa Newsgroups: comp.lang.python Subject: Re: What is a function parameter =[] for? Date: Thu, 19 Nov 2015 20:39:38 +0200 Organization: A noiseless patient Spider Lines: 41 Message-ID: <87mvu9esut.fsf@elektro.pacujo.net> References: <564dbe6b$0$1610$c3e8da3$5496439d@news.astraweb.com> <564df258$0$1604$c3e8da3$5496439d@news.astraweb.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="b7cb1518d23ec19d482dcc9c31d30fdd"; logging-data="20611"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+RC9zUfwdHbZnRHFFm0qdh" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:lDtz0tzdoeF5JzshqyIkI+3n2mQ= sha1:BKsM3odlGpB7OQSMA0i0ro2MVBk= Xref: csiph.com comp.lang.python:99081 BartC : > Yes. In the languages I create, pretty much everything is mutable, > provided it can supply an l-value. Constructs such as those for empty > lists ([] in Python, () in mine) aren't l-values. > > But it doesn't apply default values. Python's default-value semantics is analogous to C++: ======================================================================== #include using namespace std; static int z; static void f(int &x = z) { x++; } int main() { cout << z << endl; f(); cout << z << endl; f(); cout << z << endl; return 0; } ======================================================================== which prints: 0 1 2 Marko