Python Урок 03

## функция

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

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

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

Возымеем пример из математики:

```
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 внутри функции.*

```