Python Forum
Generate Python variables dynamically
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Generate Python variables dynamically
#1
For getting data from MySQL and displaying it in my output.php, I dynamically create PHP variables

Quote:$i = 0;
$j = 0;
foreach($allQsdata as $Qsdata) {
++$i;
$Qnr = 'Q' . $i;
${'Q'.$i} = $questions[$j];
++$j;
// other stuff
}

The I have PHP variables like: $Q1 , $Q2 ... These arre then passed to a function as the offset names of the data arrays collected from MySQL

I was just wondering, is it possible to dynamically create variables in Python? Just out of interest.
Reply
#2
Suggested reading: Why you don't want to dynamically create variables
buran likes this post
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply
#3
If you have an object you can set attributes for the object
import junk

for name, value in zip('abc', (1, 2, 3)):
    setattr(junk, name, value)

print(junk.a, junk.b, junk.c)
Output:
1 2 3
What I don't know is how to get the module for the file you are in. I suppose you could use locals() or globals().
globals()['a'] = "I am a global a"
locals()['b'] = "I am a global b"

def func():
    locals()['b'] = "I am local b"
    locals()['c'] = "I am local c"
    print(a)
    print(b)
    print(c)

print(a)
print(b)

func()
Output:
I am a global a I am a global b I am a global a I am a global b Traceback (most recent call last): File "...", line 14, in <module> func() File "...", line 9, in func print(c) NameError: name 'c' is not defined
Looks like locals() doesn't create variables in the local scope of the function. Not surprising.

I cannot fathom why you would ever want to do this. A variable is a convenient name you can use to access an object. Dynamically created names are not going to be convenient.
Reply
#4
(Mar-02-2022, 10:51 PM)Pedroski55 Wrote: I was just wondering, is it possible to dynamically create variables in Python? Just out of interest.

Don't go that way. And why should you?
(Mar-02-2022, 10:51 PM)Pedroski55 Wrote:
${'Q'.$i} = $questions[$j];

Why not use a dictionary?
Q = {}
...
Q[i] = questions[j]
Reply
#5
Thanks for the replies, interesting.

All I can say is, in PHP, I have found this very useful, since I have a function which returns an array with contents from MySQL and I need to collect X different arrays, depending on the number of questions, which varies. Barring writing static individual code for each week (PHP and me are not good friends), dynamically created variables are very useful!
BashBedlam likes this post
Reply
#6
If you think you need to create variables it just means you don't understand collections. If you really think about it, there are no variables in Python. a = a + 1 is locals["a"] = locals["a"] + 1
a = 1
print(a)
a = a  + 1
print(a)
locals()["a"] = locals()["a"] + 1
print(a, locals()["a"])
Output:
1 2 3 3
So anything you can do by dynamically making variables you could do with a dictionary. And a dictionary is better because it will only contain the keys you add. It not only keeps my things organized and together, it keeps everything else out. You can iterate through a dictionary of your PHP arrays and be comfortable knowing that all the items are PHP arrays. You also know you didn't accidentally overwrite something in the local scope.

I don't think dynamically created variables are bad. They are much worse than that.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Help with Python Script to generate SVG Dot Matrix Pattern for LED Light Guide iamrickm 2 772 Aug-25-2023, 06:07 PM
Last Post: iamrickm
  Generate RPM package from a Python + Kivy application for an "offline" installation pruvosim 2 2,225 Jun-04-2020, 12:16 PM
Last Post: pruvosim
  generate UML design from python code Phaze90 2 2,485 Apr-13-2020, 11:36 AM
Last Post: Phaze90
  generate random variables based on a non-standard t-distribution nathalie 4 3,456 Dec-03-2019, 12:11 AM
Last Post: scidam
  How can one generate triangular and sawtooth waves in python? xBlackHeartx 6 13,628 Sep-25-2019, 11:52 PM
Last Post: metulburr
  Generate a report in Python qureshi 2 3,630 Aug-24-2019, 04:50 AM
Last Post: ndc85430
  I need help using Python to generate usernames and passwords with excel documents Jannejannesson 3 4,026 May-08-2019, 02:30 PM
Last Post: Jannejannesson
  How to generate calendar with 2 formats in python luizcrf 1 2,678 Nov-01-2018, 06:46 AM
Last Post: Larz60+
  How to generate more MP3 files at the same time in Amazon Polly using Python code? makiwara 2 3,777 Jul-02-2018, 08:43 PM
Last Post: makiwara
  how to generate sha256 hash for each line of my txt file | using python version 3.6.4 rajtekken5 2 9,106 Feb-11-2018, 01:41 PM
Last Post: rajtekken5

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020