On Wed, 21 Apr 2021 12:36:34 -0700 Christopher Barker <python...@gmail.com> wrote: > > But that's not what duck typing is (at least to me :-) ) For a given > function, I need the passed in object to quack (and yes, I need that quack > to sound like a duck) -- but I usually don't care whether that object > waddles like a duck. > > So yes, isinstance(obj, Sequence) is really the only way to know that obj > is a Sequence in every important way -- but if you only need it to do one > or two things like a Sequence, then you don't care.
It depends on the context, though. Sometimes it's better to check explicitly and raise a nice error message, then raise a cryptic error much further that seems to bear little relationship to the line of code the user wrote. Especially if that error is raised at the end of a 10-minute computation, or after sending 1GB of data to a S3 bucket. For this reason, when there's no use case for accepting many kinds of sequences in a user-facing API, I find it useful to do a `isinstance(x, (list, tuple))` check before proceeding. Yes, it's not pure duck typing, but who cares? Regards Antoine. _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/D2WLZTH7X34Y57DRSQVCMTDFOTOWSIQ5/ Code of Conduct: http://python.org/psf/codeofconduct/