Python Variables

In Python, variables are symbolic names that refer to a memory location where a value is stored. They store data and allow developers to manipulate and use the data within programs.

Unlike other programming languages, Python variables do not require explicit declaration of their type, as Python is a dynamically typed language. This means that the variable type is inferred from its assigned value. Python also follows the concept of reference counting, where variables are simply references (or pointers) to objects in memory.

Let’s explore Python variables in depth.

Key Characteristics of Python Variables

1. Dynamically Typed: Python variables do not need a type declaration at creation time. The type is automatically assigned based on the value assigned to the variable.

				
					a = 10  # Integer
b = "Hello, World!"  # String
c = 3.14  # Float
d = True  # Boolean

				
			

2. Variables as References: In Python, variables are references (or labels) that point to objects in memory. They don’t actually “hold” the data themselves, but point to an object that contains the data.

				
					x = 5
y = x  # Both x and y point to the same object (the integer 5)

				
			

3. Reassignment: You can reassign a variable to another type at any time. This is because Python variables are not bound to a specific type.

				
					a = 10                   # Initially an integer
a = "Now I'm a string!"  # Now the same variable holds a string

				
			

4. No Need for Explicit Declaration: You don’t need to declare a variable before using it. You can directly assign a value to a variable, and it will be created automatically.

				
					age = 25
name = "Alice"

				
			

5. Case Sensitivity: Python is case-sensitive, meaning variable and Variable are considered two distinct identifiers.

				
					name = "Alice"
Name = "Bob"
print(name)  # Outputs: Alice
print(Name)  # Outputs: Bob

				
			

6. Multiple Assignments: Python allows multiple variables to be assigned in a single line. You can either assign the same value to multiple variables or different values.

				
					x = y = z = 0      # All variables x, y, and z are assigned the value 0
a, b, c = 1, 2, 3  # Multiple variables assigned different values

				
			

Creating Variables in Python

To define a variable in Python, you follow this simple syntax:

				
					variable_name = value
				
			

Here, the = is known as the assignment operator. This syntax assigns the value on the right-hand side to the variable name on the left-hand side.

Example:

Let’s say you want to keep track of a counter that starts at 1:

				
					counter = 1
				
			

In this case, the variable counter is created and assigned the value 1. Python now knows that counter refers to the number 1 in this part of the program.

Rules for Naming Variables

While naming variables is flexible, there are some rules you must follow. If these rules are not followed, Python will throw an error.

1. Only letters, numbers, and underscores are allowed:

  • A variable name can contain letters (both lowercase and uppercase), numbers, and underscores (_).
  • However, it cannot start with a number.

Examples:

				
					valid_variable1 = 10       # ✅ Valid
_valid_variable = "Hello"  # ✅ Valid
1invalid_variable = 5      # ❌ Invalid (starts with a number)

				
			

2. No spaces are allowed in variable names:

  • If you need to separate words in a variable name, use underscores (_) instead of spaces.

Examples:

				
					user_age = 30  # ✅ Valid
user age = 30  # ❌ Invalid (contains space)

				
			

3. Avoid using Python keywords:

  • Variable names cannot be the same as Python keywords (e.g., if, for, while) or built-in functions (e.g., print, len).

Examples:

				
					l = 1          # ❌ Confusing, looks like the number 1
O_value = 100  # ❌ Confusing, looks like zero

				
			

Guidelines for Good Variable Names

When naming variables, there are some best practices to keep in mind for writing clear and maintainable code:

  1. Be concise but descriptive: Choose names that describe the purpose of the variable. Avoid one-letter variable names like x or y unless in a minimal context (like loop counters). Prefer meaningful names that describe the data or function they represent. For example, last_name it is much clearer than lm.
  2. Use underscores to separate words: For variable names that consist of multiple words, use underscores (_) to make them readable.
  3. Avoid confusing letters: It’s a good practice to avoid using letters like l (lowercase “L”) and O (uppercase “O”) in variable names because they can look like the numbers 1 and 0, respectively. 
  4. Avoid Global VariablesGlobal variables can make debugging and maintaining code more complex. I prefer passing variables into functions as parameters.

Types of Variables (Based on Scope)

1. Global Variables: A global variable is defined outside functions and accessible throughout the program, including within functions (unless shadowed by a local variable).

				
					global_var = "I am global!"

def some_function():
    print(global_var)  # This will print: I am global!

some_function()

				
			

2. Local Variables: A local variable is defined within a function and is only accessible within that function.

				
					def another_function():
    local_var = "I am local!"
    print(local_var)

another_function()
# print(local_var)  # This will raise an error, as local_var is not accessible outside the function.

				
			

3. Nonlocal Variables: In nested functions, the nonlocal keyword allows modification of variables in the nearest enclosing scope (but not global scope).

				
					def outer():
    var = "outer variable"

    def inner():
        nonlocal var
        var = "modified in inner"
        print(var)

    inner()
    print(var)

outer()
# Outputs:
# modified in inner
# modified in inner

				
			

Variables in Python are highly flexible, allowing you to easily work with different types of data without explicitly declaring their type. The ability to dynamically change a variable’s type is a powerful feature, but it also requires careful consideration to ensure code remains readable and error-free. Understanding the scope of variables (global, local, nonlocal) is crucial for writing functions and programs that behave as expected.