A hard exercise to help build the right mental model for Python data.

The โ€œSolutionโ€ link visualizes execution and reveals whatโ€™s actually happening using ๐—บ๐—ฒ๐—บ๐—ผ๐—ฟ๐˜†_๐—ด๐—ฟ๐—ฎ๐—ฝ๐—ต: https://github.com/bterwijn/memory_graph

you are viewing a single comment's thread
view the rest of the comments
[โ€“] 5 points 1 month ago (3 children)

I didn't have previous exposure to that exact syntax either, but:

  • Python and plenty other languages have assignment variations with an operator like +
  • | in plenty of languages means logical OR
    • possibly bitwise, but that seems unlikely in Python
  • Dicts are sorta complex siblings of sets
  • In terms of sets, OR is equivalent to a union

Hence, a |=b should have the same meaning as a = a | b or a = a.union(b)

and then the quiz is about basically implementation details and what the actual semantics winds up being in a language like python, where stuff is mutable by default and references are implicit (even though the zen of python states a preference for being explicit)

  • source
  • parent
  • hideshow 3 child comments
  • [โ€“] [S] 3 points 1 month ago* (last edited 1 month ago) (2 children)

    There is one important difference between a |= b and a = a | b, that is one part that makes this exercise difficult. See the dictionary docs (https://docs.python.org/3/builtins/stdtypes.html#dict):

    d |= other Update the dictionary d with keys and values from other, which may be either a mapping or an iterable of key/value pairs. The values of other take priority when d and other share keys. Added in version 3.9.

    Pick your answer and check the Solution link.

    The zen of Python lies unless you're Dutch. I'm Dutch and when I look out of my office I see the CWI where Guido wrote the original Python versions back in the day, see "Python the documentory" on YouTube.

  • source
  • parent
  • hideshow 2 child comments