News for hackers. Stuff that matters.
Re:What's New in Python 3.12 by ddejohn on Wednesday October 18, 2023 @06:38PM (#37935742)
There's certainly humor in a function called "safe navigation" mutating the data structure I'm supposedly safely navigating through :D
Re:What's New in Python 3.12 by dmr_92 on Wednesday October 18, 2023 @09:31PM (#37937137)
I don't think this is correct . The name obj gets rebound, but the dictionary being traversed isn't mutated in any way.
Re:What's New in Python 3.12 by Austizzle on Thursday October 19, 2023 @12:47AM (#37938569)
Yeah I agree, no mutation here as far as I can tell
Re:What's New in Python 3.12 by ddejohn on Thursday October 19, 2023 @05:14PM (#37948820)
Correct. I was drunk.
Re:What's New in Python 3.12 by wodenokoto on Thursday October 19, 2023 @02:28AM (#37939237)
I did type it on my phone, so I’m sure it needs a little correction (particularly the choice of exceptions is not optimal, I think) but feel free to run it in any recent python interpreter and return back with any mutation you see.
Re:What's New in Python 3.12 by wodenokoto on Thursday October 19, 2023 @04:35AM (#37940128)

    $ python3
    Python 3.11.6 (main, Oct  2 2023, 20:46:14) [Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from typing import List
    >>> def safe_navigation(obj, path: List[str], default=None):
    ...     try:
    ...         for key in path:
    ...             obj = obj[key]
    ...         return obj
    ...     except KeyError:
    ...         return default 
    ... 
    >>> obj = {1: {1: {1: 2}}}
    >>> safe_navigation(obj, [1,1,1])
    2
    >>> obj
    {1: {1: {1: 2}}}