Передайте необязательную функцию в качестве аргумента функции Python [closed]

Я хочу передать необязательную функцию другой функции в Python. Если функция не передана, она должна просто передать выполнение этой (несуществующей) функции. Приведенный ниже код работает, но мне было интересно, хороший ли это способ. Мне не очень нравится, что я должен определять do_nothing функция.

from typing import Callable

def do_nothing():
    pass

def some_function(arg1: str, arg2: str, optional_function_to_execute: Callable=do_nothing) -> None:
    print(arg1)
    optional_function_to_execute()
    print(arg2)

def optional_1() -> None:
    print("something1")

def optional_2() -> None:
    print("something2")

some_function("test1", "test2", optional_1)
some_function("test1", "test2", optional_2)
some_function("test1", "test2")

1 ответ
1

Вы можете присвоить значение по умолчанию None, а затем попытаться вызвать его, только если оно не None. И вы можете показать это в подсказках типа, используя Optional. Так:

from typing import Callable, Optional

def some_function(arg1: str, arg2: str, optional_function_to_execute: Optional[Callable] = None) -> None:
    print(arg1)
    if optional_function_to_execute is not None:
        optional_function_to_execute()
    print(arg2)

Тогда нет необходимости в функции do_nothing.

  • 1

    Пожалуйста, не отвечайте на вопросы, не относящиеся к теме.

    — седобородый


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

Ваш адрес email не будет опубликован. Обязательные поля помечены *