Функции Python
Функция — это блок организованного кода, используемый для выполнения одной задачи. Они обеспечивают лучшую модульность для вашего приложения и возможность повторного использования.
Аргументы функции
Функция может принимать аргументы и возвращать значения:
В следующем примере функция say_hello принимает аргумент “name” и выводит приветствие:
# Define a function that takes one argument
def say_hello(name):
print(f'Hello {name}')
# Call the function with a string argument
say_hello('Carlos')
Hello Carlos
say_hello('Wanda')
Hello Wanda
say_hello('Rose')
Hello Rose
Именованные аргументы (Keyword Arguments)
Чтобы улучшить читаемость кода, мы должны быть максимально явными. Мы можем добиться этого в наших функциях, используя Keyword Arguments:
# Function with multiple parameters
def say_hi(name, greeting):
print(f"{greeting} {name}")
# Positional arguments: order matters
say_hi('John', 'Hello')
Hello John
# Keyword arguments: order doesn't matter, more readable
say_hi(name='Anna', greeting='Hi')
Hi Anna
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
Возвращаемые значения (Return Values)
При создании функции с помощью оператора def вы можете указать, какое должно быть возвращаемое значение, с помощью оператора return. Оператор возврата состоит из следующего:
Ключевое слово
return.Значение или выражение, которое должна вернуть функция.
# Function that returns a value using return statement
def sum_two_numbers(number_1, number_2):
return number_1 + number_2
# Call function and store the returned value
result = sum_two_numbers(7, 8)
print(result)
15
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
returnoutputyieldexitЛокальная и глобальная области видимости (Local and Global Scope)
Код в глобальной области видимости не может использовать локальные переменные.
Однако локальная область видимости может получать доступ к глобальным переменным.
Код в локальной области видимости функции не может использовать переменные из любой другой локальной области видимости.
Вы можете использовать одно и то же имя для разных переменных, если они находятся в разных областях видимости. То есть, может существовать локальная переменная с именем
spamи глобальная переменная с тем же именемspam.
# Global variable: accessible everywhere
global_variable = 'I am available everywhere'
def some_function():
print(global_variable) # Can access global variable
# Local variable: only exists within this function
local_variable = "only available within this function"
print(local_variable)
# This will raise NameError: local_variable doesn't exist in global scope
print(local_variable)
Traceback (most recent call last):
File "<stdin>", line 10, in <module>
NameError: name 'local_variable' is not defined
Оператор global
Если вам нужно изменить глобальную переменную изнутри функции, используйте оператор global:
# Use 'global' keyword to modify global variable from inside function
def spam():
global eggs # Declare that we're modifying the global variable
eggs = 'spam' # This changes the global variable
eggs = 'global'
spam() # Function modifies global variable
print(eggs) # Prints 'spam', not 'global'
spam
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
nonlocalglobalexternСуществуют четыре правила, определяющие, находится ли переменная в локальной или глобальной области видимости:
Если переменная используется в глобальной области видимости (то есть вне всех функций), то это всегда глобальная переменная.
Если в функции есть оператор
globalдля этой переменной, это глобальная переменная.В противном случае, если переменная используется в операторе присваивания внутри функции, это локальная переменная.
Но если переменная не используется в операторе присваивания, это глобальная переменная.
Функции Lambda
В Python функция lambda — это однострочная анонимная функция, которая может иметь любое количество аргументов, но только одно выражение.
From the Python 3 Tutorial
lambda is a minimal function definition that can be used inside an expression. Unlike FunctionDef, body holds a single node.
Single line expression
Lambda functions can only evaluate an expression, like a single line of code.
Эта функция:
# Regular function definition
def add(x, y):
return x + y
add(5, 3)
8
Эквивалентна функции lambda:
# Lambda function: anonymous function defined in one line
# Syntax: lambda arguments: expression
add = lambda x, y: x + y
add(5, 3)
8
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
Как и обычные вложенные функции, лямбда-функции также работают как лексические замыкания:
# Lambda closure: lambda function that captures variable from outer scope
def make_adder(n):
return lambda x: x + n # Lambda captures 'n' from outer function
# Create functions that add different amounts
plus_3 = make_adder(3) # Returns lambda that adds 3
plus_5 = make_adder(5) # Returns lambda that adds 5
plus_3(4) # Returns 4 + 3 = 7
7
plus_5(4)
9
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения