Function scope affects variable behavior by determining where a variable can be accessed and modified within a program. Here are the key points:
-
Local Variables: Variables defined within a function are local to that function. They cannot be accessed outside of it. For example:
def my_function(): x = 10 # Local variable print(x) my_function() # Outputs: 10 print(x) # Raises an error: NameError: name 'x' is not defined -
Global Variables: Variables defined outside of any function are global and can be accessed from any function within the same module. However, if you want to modify a global variable inside a function, you need to declare it as global:
x = 10 # Global variable def modify_global(): global x x = 20 # Modifies the global variable modify_global() print(x) # Outputs: 20 -
Enclosing Scope: Functions can also access variables from their enclosing scope (like outer functions). This is known as a closure:
def outer_function(x): def inner_function(): print(f"x from outer function: {x}") inner_function() outer_function(30) # Outputs: x from outer function: 30
Understanding function scope helps prevent unintended side effects and makes your code more predictable and easier to debug.
