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

  • esa@discuss.tchncs.de
    link
    fedilink
    arrow-up
    2
    ·
    11 hours ago

    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)

    • bterwijn@programming.devOP
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      4 hours ago

      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.