Правильно ли передать None параметру?

Я пытаюсь понять, если это хорошая идея или не передать в качестве параметра Python эквивалент нуля; я считаю, что нет.

Пример: у вас есть функция, которая принимает n параметров; в одном случае мне нужны только первый и второй параметры, поэтому вместо того, чтобы писать длинное определение функции с помощью args и kwargs и манипулировать ими, я могу просто передать null одному из параметров.

def myfunct(a, b, c[optional], d[optional], e, f....n):
    [do something]
    if d=="y":
        [do something but use only a and b]

Исполнение:

myfunct(a, b, c, d, .....n)                #OK!
myfunct(a, b, None, "y", None,....n)       #OK?

Теоретически это не должно приводить к ошибке, так как я считаю, что null - это значение (это не C++), хотя я не уверен, что это правильный способ сделать что-то. Функция знает, что существует условие, когда один из параметров является конкретным значением, и в этом случае она не будет запрашивать какой-либо другой параметр, кроме 1; поэтому риск использования null должен быть практически равен 0.

Это приемлемо, или я потенциально вызываю проблемы в будущем, используя этот подход?

Ответ 1

Нет ничего плохого в использовании None для обозначения "Я не поставляю этот аргумент".

Вы можете проверить None в своем коде:

if c is None:
    # do something
if d is not None:
    # do something else

Одна рекомендация, которую я бы сделал, заключается в том, чтобы None был аргументом по умолчанию для любых необязательных аргументов:

def myfunct(a, b, e, f, c=None, d=None):
    # do something

myfunct(A, B, E, F)