Параметры и аргументы функций. Локальные и глобальные переменные. Урок 14

Основы программирования на Python

Параметры и аргументы функций

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

func.gif

Когда функция вызывается, конкретные аргументы подставляются вместо параметров-переменных. Почти всегда количество аргументов и параметров должно совпадать (хотя можно запрограммировать переменное количество принимаемых аргументов). В качестве аргументов могут выступать как непосредственно значения, так и переменные, ссылающиеся на них.

Локальные и глобальные переменные

Если записать в IDLE приведенную ниже функцию, и затем попробовать вывести значения переменных, то обнаружится, что некоторые из них почему-то не существуют:

>>> def mathem(a,b):
	a = a/2
	b = b+10
	print(a+b)
 
>>> num1 = 100
>>> num2 = 12
>>> mathem(num1,num2)
72.0
>>> num1
100
>>> num2
12
>>> a
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    a
NameError: name 'a' is not defined
>>> b
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    b
NameError: name 'b' is not defined
>>> 

Переменные num1 и num2 не изменили своих первоначальных значений. Дело в том, что в функцию передаются копии значений. Прежние значения из основной ветки программы остались по прежнему связанны с их переменными.

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

>>> def mathem2():
	print(num1+num2)
 
>>> mathem2()
112
>>> 

Переменные, определенные в основной ветке программы, являются глобальными.

Практическая работа

1. Создайте функцию:

def func1(num):
	n = num * 5
 	print (n)

Вызовите ее, передав в качестве аргумента значение глобальной переменной, затем любое число и, наконец, любую строку.

2. Выполните с помощью интерпретатора Python скрипт, предварительно исправив код функции так, чтобы она возвращала значение переменной n:

>>> def func(n):
	if n < 3:
		n = n*10
 
>>> a = 2
>>> b = func(a)
>>> a
2
>>> b # Почему с переменной не связано никакого значения? 
>>> 

Создано