Функции

Функции - это блоки кода, которые можно многократно использовать в программе.
Они позволяют разработчикам организовывать код, избегать его дублирования и упрощать логику программы.

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

Для создания функции используется ключевое слово def.

Пример:
def sayHelloWorld(): print("Hello world!") sayHelloWorld() # Hello world! sayHelloWorld() # Hello world! sayHelloWorld() # Hello world!

В этом примере мы объявили функцию sayHelloWorld() и вызвали её 3 раза. Вы можете вызывать функцию столько раз, сколько вам нужно!


Параметры и аргументы

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

Пример (позиционные параметры):
def f(a, b): print(a+b) f(4,2) # 6 f(6,1) # 7 f(8,3) # 11

В этом примере при объявлении функции, мы обозначили в скобках две перменные a и b, теперь при вызове функции мы должны передать ей два аргумента, которые помещаются в эти переменные.
Так при вызове f(4,2) получиться, что a=4, b=2.

Пример (именованные параметры):
def f(a=0, b=0): print(a - b) f(a=4, b=1) # 3 f(b=6, a=8) # 2 f(b=5) # -5 f() #0

В этом примере при объявлении функции, мы обозначили в скобках две перменные a и b, однако теперь мы дали им значения по умолчанию и если мы вызываем функцию без аргументов f() то переменные принимают заранее определённые в функции значения, в нашем примере это a=0, b=0.
Так-же обратим внимание, что мы можем указать название переменной при передаче параметра, например при вызове f(b=5), переменные будут равны a=0, b=5.

Пример (необязательные параметры):
def f(a, b=1): print(a / b) f(100) # 100.0

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

Пример (переменное количество параметров):

Иногда нужно передать неопределённое количество аргументов. Для этого используются специальные обозначения:

  • *args - для передачи произвольного количества позиционных аргументов;
  • **kwargs - для передачи произвольного количества именованных аргументов;
def sum_numbers(*numbers): total = 0 for number in numbers: total += number print(total) sum_numbers(1, 2, 3) # 6 sum_numbers(1, 2, 3, 4, 5) # 15

Если появляется необходимость передать несколько параметров в функцию, причем заведомо не известно сколько именно параметров будет передано в функцию, то можно указать в параметре * перед названивем переменной. Таким образом, вы получаете список параметров.
В данном примере, мы приняли список чисел и просуммировали их!


Возвращаемое значение

Если по итогу работы функции необходимо получить какое-то значение, то используется оператор return.

Пример:
def multiply(a, b): return a * b product = multiply(2, 3) print(product) # Выведет: 6

Кроме того, что оператор reutrn возвращает значение, важно знать, что после этого оператора никакой код функции не выполняется.

Пример:
def f(): print("hello!") # hello! return print("bye!") # - эта строка не выполняется, т.к. после return f()

Ну и небольшой комментарий по поводу произношения этого слова, это не "ретурн", правильней сказать "ритёрн", и буквы "р" практически не произносятся, как например в слове work.


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

Переменные внутри функции имеют локальную область видимости, то есть они доступны только внутри этой функции.

Пример:
x = 10 # Глобальная переменная def change_x(): x = 20 # Локальная переменная y = 40 # Локальная переменная change_x() print(x) # Выведет: 10 print(y) # NameError: name 'y' is not defined

Несмотря на то, что мы вызвали функцию change_x(), переменная x, не поменяла своего значения, а при попытке обратиться к переменной y вне функции, мы получили ошибку и сообщение о том, что её не существует.

Однако можно использовать глобальные переменные, объявив их с помощью ключевого слова global.

Пример:
x = 10 # Глобальная переменная def change_x(): global x x = 20 change_x() print(x) # Выведет: 20

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


Лямбда-функции

Лямбда-функции — это анонимные функции, которые часто используются для выполнения коротких операций.

Пример:
square = lambda x: x ** 2 print(square(5)) # Выведет: 25

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


Функции повсеместно используются в разработке программного обеспечения, необходимо порешать ряд задач, чтобы хорошо ориентироваться в этой теме! Решайть задачи!


Комментарии

Добавить комментарий

Чтобы оставить комменатрий необходимо Авторизоваться