• pnutzh4x0r@lemmy.ndlug.org
    link
    fedilink
    English
    arrow-up
    8
    ·
    1 month ago

    Path objects also override the / operator to join paths

    This is both cool and gross… gives me C++ vibes (operator overloading abuse).

    • Fred@programming.dev
      link
      fedilink
      arrow-up
      4
      ·
      1 month ago

      Scapy is another library where they redefined / to layer packets, such that you can write:

      IP(dst="172.23.34.45") / UDP() / DNS(…)
      

      Then Scapy has magic so that on serialisation, the UDP layer knows defaults to dport=53 if the upper layer is DNS, and it can access the lower layer to compute its checksum.

      And don’t forget that strings have a custom % (as in modulo) operator for formatting:

      "Hello %s" %(username)
      

      Of course in modern Python, f-strings will almost always be more convenient

    • Midnitte@beehaw.org
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 month ago

      A great joy when working with people on a combination of Windows/MacOS/Linux.

      Hell, even great when your laptop is windows and desktop (or even raspberry pi) is Linux

    • Diplomjodler@lemmy.world
      link
      fedilink
      arrow-up
      3
      arrow-down
      1
      ·
      1 month ago

      They could have chosen a better operator. But the functionality is fantastic. Makes working with paths so much easier. And you can even use slashes on windows paths.

      • leds
        link
        fedilink
        arrow-up
        8
        ·
        1 month ago

        It makes the code so much more clean and readable since you’re dropping multiple levels of brackets , for example

        os.path.join( a, b, os.path.dirname(c))

        Becomes

        a / b / c.parent

        I really like it