# Closures

A closure is a function object that remembers values in enclosing scopes even if they are not present in memory. Here’s an example to demonstrate how closures work in Python.

#### Closures Example

def power_of(exponent):
"""Return a function that raises a number to the given exponent."""
def power(base):
return base ** exponent
return power

# Create functions for squaring and cubing numbers
square = power_of(2)
cube = power_of(3)

print(f"5 squared is {square(5)}")
print(f"3 cubed is {cube(3)}")

### Explanation

1. power_of Function:
• This is a higher-order function that takes an exponent as an argument.
• Inside power_of, a nested function power is defined, which takes a base as an argument and returns base raised to the exponent.
• The power function is returned by power_of, creating a closure that captures the exponent value.
2. Creating Closure Functions:
• square is created by calling power_of(2), resulting in a function that squares a number.
• cube is created by calling power_of(3), resulting in a function that cubes a number.
3. Using the Closure Functions:
• square(5) computes 52=255^2 = 2552=25.
• cube(3) computes 33=273^3 = 2733=27.

### Output

When you run the above code, you will get the following output:

5 squared is 25
3 cubed is 27