Python II

## Урок 3

Функция — это составная инструкция. Которая может принимать данные ввода, выполнять указание и возвращать данные вывода.

Одно из главный преимуществ функций — это многократное использование кода.

### Как работает функция

```
Возымеем пример из математики.
f(x) = 2 * x - 2

У нас есть функция f(x) (f — это имя нашей функции). Она принимает в себя исходные данные, в нашем случае x и затем с этим x выполняет операции. Потом он выдаст ответ.

```

В я зыке Python у нас практически все тоже самое. У нас есть фикция(f), исходные данные(x) которая принимает эти функции, указание операции с данными(2 \* x - 2).

#### Синтаксис функции

```
Определение функции

def имя_функции(параметры):
    определение_функции

Имена функции указываться по таким же правилам, как переменные.

```

#### Пример использование функции

Пример использование на примерен "Привет, Мир!".

```
def hello():
    print ("Привет, Мир!")

Если мы запустим функцию, то он нам нечего не произойдет. Почему? Потому что мы ее объявили, мы задали ей указание, но мы ее не вызвали. Соответственно у нас нечего на экран не выведется.

```

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

```
def hello():
    print ("Привет, Мир!")

hello()

```

Как говорилось выше код функции можно использовать многократно. И тем самым экономя время при написании кода.

```
def hello():
    print ("Привет, Мир!")

hello()
hello()
hello()
hello()
hello()

```

#### Как работает функция с параметрами

Такое задание: пользователь вводит 2 числа, нам нужно написать функцию которая выводит сумму чисел.

```
Оператор return возвращает какое значение.

```

```
x = int(input("Введите число 1"))
y = int(input("Введите число 2"))

def sum(a,b): #Для того чтобы числа не сталкивались, нужно их назвать не такими же именами(x, y), а другими (a, b).
   return a + b #Опратор должен вернуть ссубу дух чисел.

sum(x,y) #Вызываем функцию

Наша программа на данном этапе просто почитала эту сумму, но не вывела.

```

Для того чтобы программа вывела сумму нужно вызов функции заключить в оператор print: print(sum(x,y))

```
x = int(input("Введите число 1"))
y = int(input("Введите число 2"))

def sum(a,b): #Для того чтобы числа не сталкивались, нужно их назвать не такиме же именами(x, y), а другими (a, b).
   return a + b #Опратор должен вернуть ссубу дух чисел.

print(sum(x,y)) #Вызываем и показывает функцию.

```

Есть еще один способ. Создать третью переменную z, и в ней вызвать функцию sum(x,y). Затем распечатать(показать) чисто этот элемент.

```
x = int(input("Введите число 1"))
y = int(input("Введите число 2"))

def sum(a,b): #Для того чтобы числа не сталкивались, нужно их назвать не такиме же именами(x, y), а другими (a, b).
   return a + b #Опратор должен вернуть ссубу дух чисел.

z = sum(x,y)
print(z) #Вызываем и показывает функцию.

```

### Разбор примера с математической функцией

```
def f(a):
   return 2 * a - 2

print(f(2)) #Вызываем и показывает функцию. Это обязательный параметр.

```

Так же можно сделать необязательный параметр(параметр по умолчанию), если def f(a = 2)

```
def f(a = 2): # Параметр по умолчанию
   return 2 * a - 2

print(f()) #Вызываем и показывает функцию.

```

Даже если значение введено, можно явный параметр. Функция даст приоритет явному параметру, потому что при вызови функции это будет гораздо приоритетнее для него.

```
def f(a = 2): # Параметр по умолчанию
   return 2 * a - 2

print(f(4)) #Вызываем и показывает функцию. Это явный параметр.

```

### Область видимости переменных

У переменных есть свойство как область видимости. То есть некоторые переменные могут видеть к примеру внутри функции, или есть переменные глобальные и т.д.

Что это значит, рассмотрим на примере:

```
a = 45
b = 5
def f(a, b):
    print (a)
    print (b)

f(a, b)

Здесь он просо вывел числа a и b.
Здесь переменные a и b за пределами функции, в самой программе(глобальные).

```

```
def f(a, b):
    a = 45
    b = 5
    print (a)
    print (b)

print (a)
print (b)

В данном случае a и b являются локальными переменными, и будут видны только внутри функции def.

```

Чтобы использовать и изменять глобальную переменные внутри свое функции можно использовать оператор global()

```
a = 45
b = 5

```

def f():

```
    global a
    a = a + 2
    print (a)

f()

Мы взяли глобальную функцию a, изменили ее внутри функции, и вывели ее изменённую на экран.

```

А если мы сейчас введем переменную а, не функцию вызвали а именно переменную.

```
a = 45
b = 5

```

def f():

```
    global a
    a = a + 2
    print (a)

f()
print(a)

Что произошло, он уже изменил глобальную переменную a внутри функции.

```