@sodiqolabodeafolayan, where is this from? Please provide a link.

Your function doesn’t really look like a Python function: use the </> icon for formatting:

```
def mathematics(x, y, z):
x = (4*5)+2
y = (27-18)+2
z = 18
return (x * y)%z+(244)
mathematics(x, y, z)
''' Output:
Traceback (most recent call last):
File "C:\Users\patrick\scripts\test.py", line 8, in <module>
mathematics(x, y, z)
NameError: name 'x' is not defined
'''
```

… shouldn’t it be:

```
# these two lines are the function
def mathematics(x, y, z):
return (x * y)%z+(244)
# these are variables which will be passed to the function ..
x = (4*5)+2
y = (27-18)+2
z = 18
# ... by means of this function call
mathematics(x, y, z)
''' Output:
252
'''
```

The symbols **x**, **y** and **z** are the *parameters* of the function. They tell the function:

“When this function is *called* by a *statement* such as `mathematics(value_1, value_2, value_3)`

, you are to carry out the calculations within the function body (the indented block below the *def* line), and, in doing so, assign **value_1** to **x**, **value_2** to **y** and **value_3** to **z** (corresponding to the positions in the calling statement’s parentheses), within the function body.”

In the first example, none of this happens; x, y and z are assigned values within the function body, and when the function call comes along, mathematics(x, y, z) - outside of the function - the x, y, and z seen within it have no values attached. The error message just stops with x, and parsing stops there.