Функции
Аргументы функции¶
Функция может принимать arguments
и return values
:
В следующем примере функция say_hello получает аргумент «имя» и печатает приветствие:
>>> def say_hello(name):
... print(f'Hello {name}')
...
>>> say_hello('Carlos')
# Hello Carlos
>>> say_hello('Wanda')
# Hello Wanda
>>> say_hello('Rose')
# Hello Rose
Аргументы ключевых слов¶
Чтобы улучшить читаемость кода, мы должны быть как можно более явными. Мы можем добиться этого в наших функциях, используя Keyword Arguments
:
>>> def say_hi(name, greeting):
... print(f"{greeting} {name}")
...
>>> # without keyword arguments
>>> say_hi('John', 'Hello')
# Hello John
>>> # with keyword arguments
>>> say_hi(name='Anna', greeting='Hi')
# Hi Anna
Возвращаемые значения¶
При создании функции с помощью оператора def
вы можете указать, каким должно быть возвращаемое значение, с помощью оператора return
. Оператор return
состоит из следующих :
-
Ключевое слово
return
. -
Значение или выражение, которое должна вернуть функция.
>>> def sum_two_numbers(number_1, number_2):
... return number_1 + number_2
...
>>> result = sum_two_numbers(7, 8)
>>> print(result)
# 15
Local и Global области¶
-
Код в глобальной области не может использовать локальные переменные.
-
Однако локальная область может получить доступ к глобальным переменным.
-
Код в локальной области видимости функции не может использовать переменные в какой-либо другой локальной области видимости.
-
Вы можете использовать одно и то же имя для разных переменных, если они находятся в разных областях. То есть может быть локальная переменная с именем spam и глобальная переменная с таким же именем spam.
global_variable = 'I am available everywhere'
>>> def some_function():
... print(global_variable) # because is global
... local_variable = "only available within this function"
... print(local_variable)
...
>>> # the following code will throw error because
>>> # 'local_variable' only exists inside 'some_function'
>>> print(local_variable)
Traceback (most recent call last):
File "<stdin>", line 10, in <module>
NameError: name 'local_variable' is not defined
Оператор global¶
Если вам нужно изменить глобальную переменную внутри функции, используйте оператор global
:
>>> def spam():
... global eggs
... eggs = 'spam'
...
>>> eggs = 'global'
>>> spam()
>>> print(eggs)
Есть четыре правила, чтобы определить, находится ли переменная в локальной или глобальной области видимости:
-
Если переменная используется в глобальной области (то есть вне всех функций), то это всегда глобальная переменная.
-
Если в функции есть глобальный оператор для этой переменной, это глобальная переменная.
-
В противном случае, если переменная используется в операторе присваивания в функции, это локальная переменная.
-
Но если переменная не используется в операторе присваивания, это глобальная переменная.
Lambda функции¶
В Python лямбда-функция — это однострочная анонимная функция, которая может иметь любое количество аргументов, но может иметь только одно выражение.
Эта функция:
Эквивалентно lambda функции:
Как и обычные вложенные функции, лямбда-выражения также работают как лексические замыкания: