Dynamic variable creation from string
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Wed Dec 7 20:59:23 EST 2011
On Wed, 07 Dec 2011 19:27:43 -0500, Terry Reedy wrote:
> On 12/7/2011 7:03 PM, Steven D'Aprano wrote:
>> On Wed, 07 Dec 2011 09:09:16 -0800, Massi wrote:
>>
>>> Is there a way to create three variables dynamically inside Sum in
>>> order to re write the function like this?
>
> I should have mentioned in my earlier response that 'variable' is a bit
> vague and misleading. Python has names bound to objects.
>
>>> def Sum(D) :
>>> # Here some magic to create a,b,c from D return a+b+c
>>
>> No magic is needed.
>>
>> a, b, c = D['a'], D['b'], D['c']
>
> This is not what most people mean by 'dynamically created variables'.
I know that. I'm just pointing out that the OP can solve his *stated*
problem of creating a *fixed* number of variables with *known* names
without any magic.
I went on to discuss the case of an unknown number of unknown names, and
suggested that the OP not do that, because it is much less useful than
people think.
> The names are static, in the code, before the code is executed. In 2.x,
> 'from x import *' dynamically creates local names that are not in the
> code that contains the import. Dynamically creating objects is what
> Python code does all the time.
Of course. And even dynamically creating names: names don't exist until
they are created at runtime. Name deletion is also possible. But what
isn't normally done is "dynamic variable creation" in the sense of
creating arbitrary variables (names bound to objects) based on names
known only at runtime. That's extremely rare, and for good reason.
--
Steven
More information about the Python-list
mailing list