On Wed, 14 Dec 2022 at 05:01, Mats Wichmann <m...@wichmann.us> wrote: > > On 12/13/22 10:36, Chris Angelico wrote: > > On Wed, 14 Dec 2022 at 03:35, Michael F. Stemper > > <michael.stem...@gmail.com> wrote: > >> > >> It's easy enough -- in fact necessary -- to handle the bottom > >> level of a function differently than the levels above it. What > >> about the case where you want to handle something differently > >> in the top level than in lower levels? Is there any way to tell > >> from within a function that it wasn't invoked by itself? > >> > > > > Why does it have to be the same function? > > > > def _sort_recursive(stuff, keys, start, end): > > """imagine a nice implementation of some sorting algorithm here""" > > > > def sort(stuff, key=None): > > if key: > > keys = [key(x) for x in stuff] > > else: > > keys = stuff > > return _sort_recursive(stuff, 0, len(stuff)) > > if some support for this position is needed, this is roughly how the > stdlib glob() function is implemented. >
Yeah, lots of things are done that way. You'll find a variety of naming conventions around different languages and libraries, including "_low_FUNCTIONNAME" or "_internal_FUNCTIONNAME" etc. It's definitely easier than trying to mess with tracking toplevel status. ChrisA -- https://mail.python.org/mailman/listinfo/python-list