простенькие примеры
def NumberDigitsInInteger(i):
"""возвращает количество цифр в целом числе"""
assert(isinstance(i,int))
return len(str(i))
тут задача конкретная и смысл функции для аргументов с типом отличным от int отсутствует, но реализация не приведет к возбуждению исключения при ошибке в типе аргумента - уместна конкретная проверка (ну я бы так сделал)
def IterFlatten(iterable):
"""итератор по вложенным перечисляемым объектам
>>> [i for i in IterFlatten([1,34.5,2,3,[[],[6,7,{'a':'b','c':'d'}]]])]
[1, 34.5, 2, 3, 6, 7, 'a', 'c']
"""
if hasattr(iterable,"__iter__"):
for seq in iterable:
for e in IterFlatten(seq):
yield e
else:
yield iterable
тут функция общая - если объект последовательность - то она применима, уместен hasattr.

indus
что вы имели ввиду под "лучше проверять
интерфейс - я имел ввиду
http://pypi.python.org/pypi/zope.interface
http://hlabs.spb.ru/development/zope/interface_description.html

концепция:
http://www.boost.org/doc/libs/1_46_1/libs/concept_check/concept_check.htm
http://download.oracle.com/javase/tutorial/java/concepts/interface.html
http://msdn.microsoft.com/en-us/library/87d83y5b%28v=vs.80%29.aspx