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

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

Часто функція використовується для обробки даних, отриманих із зовнішнього для неї середовища (з основної гілки програми). Дані передаються функції при її виклику в дужках і називаються аргументами. Однак, щоб функція могла “взяти” передані їй дані, необхідно при її створенні описати параметри (в дужках після імені функції), що представляють собою змінні.

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

Локальні та глобальні змінні

Якщо записати в 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 "", line 1, in a
NameError: name 'a' is not defined
>>> b
Traceback (most recent call last):
File "", line 1, in 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 # Чому з змінною не пов'язано жодного значення?

Практична робота