Возможно ли использовать два различных варианта функции в зависимости от ее аргументов?
У меня есть две функции :
def remote_command(data, cmd, wait_for_output) -> dict:
...
и
def remote_command(client, cmd, wait_for_output) -> dict:
...
Они обе выполняют действие разным способом и требуют разных аргументов. Первую я импортировал в файл, а вторую создал в нем. Мне в моем файле нужны обе функции, но сейчас они переопределяют друг друга. Можно ли как-то указывать какую функцию я хочу использовать в данный момент в зависимости от аргументов?
Ответы (1 шт):
Автор решения: Павел
→ Ссылка
Это можно сделать используя, например, именованные аргументы:
def remote_command(cmd, wait_for_output, data=None, client=None) -> dict:
if data:
return 'Command with data'
elif client:
return 'Command with client'
data = 'data'
client = 'client'
print(remote_command('cmd', 'wait_for_output', data=data))
print(remote_command('cmd', 'wait_for_output', client=client))
Но с точки зрения архитектуры лучше сделать декомпозицию на две функции, назвав их по-разному, раз они действительно выполняют действие разными способами:
def remote_data_command(cmd, wait_for_output, data) -> dict
def remote_client_command(cmd, wait_for_output, client) -> dict