Open In App

Accessing Python Function Variable Outside the Function

Last Updated : 08 Mar, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In Python, function variables have local scope and cannot be accessed directly from outside. However, their values can still be retrieved indirectly. For example, if a function defines var = 42, it remains inaccessible externally unless retrieved indirectly.

Returning the Variable

The most efficient way to access a function variable outside its scope is by returning it. The function retains its local scope and the variable remains encapsulated.

Python
def get_variable():
    var = 42
    return var

# accessing the function variable outside the function
res = get_variable()
print(res)

Output
42

Explanation: get_variable() defines a local variable var with the value 42 and returns it. Since local variables cannot be accessed outside their function, the returned value is assigned to res.

Using a closure

A closure allows a nested function to remember and access variables from its enclosing function even after execution. This method ensures encapsulation while avoiding global scope pollution. Closures are useful for maintaining state and are often used in callbacks and decorators.

Python
def outer_fun():
    var = 42
    
    def inner_fun():
        return var
    
    return inner_fun

# create a closure
get_var = outer_fun()

# accessing the function variable outside the function
print(get_var())

Output
42

Explanation: outer_fun() defines a local variable var and returns inner_fun(), which accesses var. Assigned to get_var, inner_fun() retains access to var even after outer_fun() executes, demonstrating a closure.

Using function parameters

Instead of directly accessing a variable, passing it as a function parameter allows modifications without breaking encapsulation. This method follows functional programming principles, making the code modular and reusable. It is efficient and ensures no unintended side effects.

Python
def modify(var):
    var += 10
    return var

# Define a variable outside the function
original_var = 5

# Passing the variable to the function
res = modify(original_var)
print(res)

Output
15

Explanation: modify(var) adds 10 to var and returns it. original_var (5) is passed to modify(), returning 15, which is stored in res.

Using class

By storing a variable as an instance attribute of a class, it can be accessed outside the function scope without modifying Python’s variable scope rules. This method is useful when multiple related variables need to be grouped, but it comes with slight overhead due to object creation.

Python
class VariableHolder:
    def __init__(self):
        self.var = 42

# creating an instance of the class
holder = VariableHolder()

# accessing the variable through the instance
print(holder.var)

Output
42

Explanation: VariableHolder class has an __init__ method that initializes the instance variable var with 42. An instance holder is created and holder.var is accessed to print 42.


Next Article

Similar Reads