Как проверять аргументы функции/метода?
Если аргумент None, означает ли это, что должно использоваться некоторое значение по умолчанию? Если да, то можно вынести if по этому аргументу отдельно, а дальше вести себя так, словно аргумент задан.

Если же нет, то стоит спросить себя - а не слишком ли много эта функция на себя берёт? Не стоит ли её разделить на несколько?
Переписывайте функцию что бы она и None нормально отрабатывала. Так же, как по мне, если вы у вас функция может не принимать аргументы вовсе - то логичней это упаковать все в: 
def foo(*args, **kwargs):
    ...
И возможно как раз с такой логикой вам легче будет все это устроить
А вообще все сильно зависит от того что вы делаете внутри функции, я вам сказал лишь свои рекомендации не опираясь на требования, а это может внести коррективы