What Are Dynamic Variables?
Dynamic variables refer to variables whose names or values are generated at runtime, not hard-coded. Python allows this using dictionaries, setattr()
, or globals()/locals()
.
Warning First
Using dynamic variable names via globals()
or locals()
is not recommended for most use cases because:
- It's hard to debug
- Makes code harder to read and maintain
- Introduces security risks in some cases
Instead, prefer using dictionaries or objects.
Recommended: Use a Dictionary
variables = {}
for i in range(3):
variables[f"var{i}"] = i * 10
print(variables["var0"]) # Output: 0
print(variables["var1"]) # Output: 10
Using setattr()
on Objects or Classes
class DynamicVars:
pass
obj = DynamicVars()
for i in range(3):
setattr(obj, f"var{i}", i * 100)
print(obj.var0) # Output: 0
print(obj.var1) # Output: 100
Not Recommended: Using globals()
or locals()
for i in range(3):
globals()[f"var{i}"] = i
print(var0) # Output: 0
print(var1) # Output: 1
This works, but is discouraged because it pollutes the global namespace.
Checking If a Dynamic Variable Exists
With hasattr()
:
if hasattr(obj, "var1"):
print("var1 exists")
With in
for dictionary:
if "var1" in variables:
print("var1 exists")
Summary Table
Method | Safe? | Use Case |
---|---|---|
dict |
✅✅ | Best for dynamic key-value storage |
setattr() |
✅ | When working with objects or configs |
globals() /locals() |
⚠️❌ | Avoid unless absolutely necessary |
Real Use Cases
- Dynamic form input handling
- Generating config objects dynamically
- Template rendering engines
- Storing user sessions or settings
Conclusion
While Python allows creating variables dynamically, the safest and cleanest way is to use dictionaries or object attributes via setattr()
. Avoid globals()
unless you're doing metaprogramming or debugging tools.
0 Comments:
Post a Comment