Я хочу передать необязательную функцию другой функции в 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 ответ
Вы можете присвоить значение по умолчанию 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.
Пожалуйста, не отвечайте на вопросы, не относящиеся к теме.
— седобородый