Michael, > Well I've only seen this done in languages where other mechanisms >for returning complex types are not present.
:-) Than you have not seen to many languages I'm afraid. There are quite a number of languages where /every/ type of argument (including values) can be transfered "by reference". Though some default to "by value", where others default to "by reference". As for "complex types" ? I don't think a(n ASCII) string can be considered any kind of a complex type, but most all languages I know of transfer them "by reference" only (though some fake "by value" by using a copy-on-write mechanism). > In C you can either return a pointer to the string (and remember who's > responsibility it is to free the memory!), or you can allocate memory > yourself and pass the pointer to a function, like strcpy. Or pass a reference to an empty pointer, have the procedure allocate the memory and return the address of it in that pointer. And only the second one comes near to what I indicated I asked about: a mutable value stored outside the current procedure. > In Python there is no similar equivalent, It looks like it > other than hacks involving passing in mutable objects The only "hack" I see here is to transfer /mutable/ object, instead of a non-mutable one. > Fair enough, but trying to do 1:1 transliterations isn't going to > help you learn idiomatic Python. If I would have wanted that, why would I post here with open questions ? But yes, I often refer to how other languages work, in an attempt to get the other to tell me whats so special/different about the current languages solution for it. Regards, Rudy Wieser -- https://mail.python.org/mailman/listinfo/python-list