Часто функция используется для обработки данных, полученных из внешней для нее среды (основной ветки программы). Данные передаются функции при ее вызове в скобках и называются аргументами. Однако, чтобы функция могла «взять» передаваемые ей данные, необходимо при ее создании указать параметры-переменные (тоже в скобках).

Когда функция вызвана, значения конкретных аргументов «подставляются» вместо параметров. Количество аргументов и параметров должно совпадать (не всегда: можно запрограммировать переменное количество принимаемых аргументов). В качестве аргументов могут выступать как конкретные значения, так и переменные.
Если вы напишете в IDLE выражения, приведенные в примере выше, а затем попробуете вывести значения переменных, то увидите следующую картину:

Переменные num1 и num2 не изменили своих первоначальных значений. Дело в том, что в функцию передавались копии значений, а не оригиналы. А вот переменных a и b оказывается нет и в помине (надпись «name 'b' is not defined» переводится как «переменная b не определена»). Данные переменные существуют лишь в момент выполнения функции и называются локальными. В противовес им, переменные num1 и num2 видны не только во внешней ветке, но и внутри функции:

Переменные, определенные за пределами функций, является глобальными.
1. Создайте функцию:
def func1(num): n = num * 5 print (n)
2. Вызовите предыдущую функцию, передав ей в качестве аргумента значение какой-нибудь глобальной переменной, затем любое число и, наконец, любую строку.
3. Выполните с помощью интерпретатора Python скрипт, предварительно исправив код функции так, чтобы переменная num ссылалась на новое число:
def func2 (a): b = 10 if a < 3: a = a * 10 num = 1 num = func2 (num) num