# Scope

Scope
Variables can only reach the area in which they are defined, which is called scope. Think of it as the area of code where variables can be used. Python supports global variables (usable in the entire program) and local variables.

By default, all variables declared in a function are local variables. To access a global variable inside a function, it’s required to explicitly define ‘global variable’.

Related course
Complete Python Bootcamp: Go from zero to hero in Python

Example
Below we’ll examine the use of local variables and scope. This will not work:

```#!/usr/bin/python   def f(x,y): print('You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y)) print('x * y = ' + str(x*y)) z = 4 # cannot reach z, so THIS WON'T WORK   z = 3 f(3,2)```

but this will:

```#!/usr/bin/python   def f(x,y): z = 3 print('You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y)) print('x * y = ' + str(x*y)) print(z) # can reach because variable z is defined in the function   f(3,2)```

Let’s examine this further:

```#!/usr/bin/python   def f(x,y,z): return x+y+z # this will return the sum because all variables are passed as parameters   sum = f(3,2,1) print(sum)```

Calling functions in functions
We can also get the contents of a variable from another function:

```#!/usr/bin/python   def highFive(): return 5   def f(x,y): z = highFive() # we get the variable contents from highFive() return x+y+z # returns x+y+z. z is reachable becaue it is defined above   result = f(3,2) print(result)```

If a variable can be reached anywhere in the code is called a global variable. If a variable is known only inside the scope, we call it a local variable.

Video: Functions Get PDF Get Exercises Quiz

## 4 thoughts on “Scope”

1. - August 28, 2016

I ran this code in v2.7.10 and it executed without any errors

```def f(x,y): print('You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(y)) print('x * y = ' + str(x*y)) z = 4 # cannot reach z, so THIS WON'T WORK print(z)   z = 3 f(3,2)```
```MacBookAir:.ssh carlwainwright\$ python ~/Projects/Python/helloworld.py You called f(x,y) with the value x = 3 and y = 2 x * y = 6 4```
1. - August 28, 2016

Try this program:

```def showz(): print(z)   def f(x,y): print('You called f(x,y) with the value x = ' + str(x) + ' and y = ' + str(\$ print('x * y = ' + str(x*y)) z = 4 # cannot reach z, so THIS WON'T WORK print(z)   z = 3 f(3,2) showz()```

In this example z will still be 3 after calling f(3,2). Sorry for the confusion, ill update

1. - August 29, 2016

So without “global z” in function ‘f’ z is local to the function and when you return back the global z is scoped.

1. - August 31, 2016

Correct, otherwise the changed occur only locally