На чем бы вы основывали совместимость? Количество аргументов? Python имеет списки аргументов переменной длины, поэтому вы никогда не знаете, совместимы ли две функции в этом смысле. Типы данных? Python использует утку, поэтому до тех пор, пока вы не используете в функции тест isinstance или аналогичный, нет ограничений на типы данных, на которых может основываться тест на совместимость.
Итак, вкратце: Нет.
Вам лучше написать хорошие строки документации, чтобы любой пользователь вашего API знал, что должна делать функция, которую он дает вам, а затем вы должны верить, что полученная функция ведет себя правильно. Любая проверка «совместимости» либо исключает возможные допустимые функции, либо дает ложное представление о том, что «все точно так, как должно быть».
Питонический способ разоблачения API: написать хорошую документацию, чтобы люди знали, что им нужно знать, и верили, что они поступают правильно. На критических позициях вы все еще можете использовать try: except:
, но всем, кто неправильно использует ваш API, потому что им просто не хотелось читать документ, не следует давать ложное чувство безопасности. И тот, кто действительно прочитал ваш документ и хочет использовать его полностью приемлемым образом, не должен лишаться возможности использовать его на основании того, как он объявил функцию.