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
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.
This is both cool and gross… gives me C++ vibes (operator overloading abuse).
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
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
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.
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
I always hated os.path. pathlib is just so much better.