210. Automatic Code Generation

πŸ”Ή 1. Generating a Function Dynamically Using exec

Copy

code = """
def greet(name):
    return f"Hello, {name}!"
"""
exec(code)

print(greet("Alice"))  # Hello, Alice!

πŸ” How it works:

  • exec runs the string as Python code, defining greet at runtime.


πŸ”Ή 2. Creating a Class Dynamically Using exec

Copy

class_code = """
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        return f"{self.name} is {self.age} years old."
"""

exec(class_code)
p = Person("Bob", 25)
print(p.info())  # Bob is 25 years old.

πŸ” How it works:

  • Defines a class dynamically and instantiates an object.


πŸ”Ή 3. Generating Functions with exec Using a Loop

Copy

πŸ” How it works:

  • Creates square_0, square_1, and square_2 functions dynamically.


πŸ”Ή 4. Using eval to Execute Simple Expressions

Copy

πŸ” How it works:

  • eval evaluates a string as a Python expression.


πŸ”Ή 5. Generating a Lambda Function with eval

Copy

πŸ” How it works:

  • Dynamically creates a lambda function and evaluates it.


πŸ”Ή 6. Creating a Dynamic Dictionary Using exec

Copy

πŸ” How it works:

  • Constructs a dictionary with dynamic keys.


πŸ”Ή 7. Dynamically Creating Properties in a Class

Copy

πŸ” How it works:

  • Uses exec to set class attributes dynamically.


πŸ”Ή 8. Creating a Custom Function Generator

Copy

πŸ” How it works:

  • Generates a function dynamically based on the operator.


πŸ”Ή 9. Using eval to Create List Comprehensions

Copy

πŸ” How it works:

  • Uses eval to generate a list dynamically.


πŸ”Ή 10. Securely Using exec with a Limited Namespace

Copy

πŸ” How it works:

  • Restricts exec to a limited namespace for safety.


πŸš€ Final Thoughts

  • exec: Runs Python statements dynamically.

  • eval: Evaluates expressions but should be used carefully.

  • Use Cases: Dynamic class creation, function generation, code execution.

Last updated