Функции Python

Programming Functions

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

Аргументы функции

Функция может принимать аргументы и возвращать значения:

В следующем примере функция 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
Викторина

Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения

What is the main advantage of using keyword arguments in Python functions?
A. They execute faster
B. They use less memory
C. They improve code readability and order doesn't matter
D. They prevent errors

Возвращаемые значения (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
Викторина

Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения

What keyword is used to return a value from a function in Python?
A. return
B. output
C. yield
D. exit

Локальная и глобальная области видимости (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
Викторина

Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения

What keyword must you use inside a function to modify a global variable?
A. nonlocal
B. global
C. extern
D. No keyword needed

Существуют четыре правила, определяющие, находится ли переменная в локальной или глобальной области видимости:

  1. Если переменная используется в глобальной области видимости (то есть вне всех функций), то это всегда глобальная переменная.

  2. Если в функции есть оператор global для этой переменной, это глобальная переменная.

  3. В противном случае, если переменная используется в операторе присваивания внутри функции, это локальная переменная.

  4. Но если переменная не используется в операторе присваивания, это глобальная переменная.

Функции 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
Викторина

Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения

What is a lambda function in Python?
A. A function that can only be called once
B. A function that takes no arguments
C. A function that returns multiple values
D. A single-line anonymous function that can have any number of arguments but only one expression

Как и обычные вложенные функции, лямбда-функции также работают как лексические замыкания:

# 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
Викторина

Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения

What does a lambda closure allow you to do?
A. Capture variables from the outer scope
B. Modify global variables without the global keyword
C. Return multiple values
D. Execute code asynchronously

Соответствующие ссылки