On 14/12/2022 13:49, Stefan Ram wrote:
I also found an example similar to what was discussed here
   in pypy's library file "...\Lib\_tkinter\__init__.py":

|def _flatten(item):
|    def _flatten1(output, item, depth):
|        if depth > 1000:
|            raise ValueError("nesting too deep in _flatten")
|        if not isinstance(item, (list, tuple)):
|            raise TypeError("argument must be sequence")
|        # copy items to output tuple
|        for o in item:
|            if isinstance(o, (list, tuple)):
|                _flatten1(output, o, depth + 1)
|            elif o is not None:
|                output.append(o)
|
|    result = []
|    _flatten1(result, item, 0)
|    return tuple(result)

   .


This presumably results in an (avoidable) run-time overhead from constructing _flatten1 every time _flatten is called (and having it garbage-collected later).
Best wishes
Rob Cliffe
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to