[Python-Dev] proposed struct module format code addition

Josiah Carlson jcarlson at uci.edu
Sun Oct 3 21:48:43 CEST 2004


> >    The 'p' format specifier is also not a standard C type, and yet it
> > is included in struct, specifically because it is useful.
> 
> I never used it <wink>.

If you have used PostgreSQL, all strings are a variant of pascal strings. 
It may be the case in other databases, but I have little experience with
them.


> > My Response:
> >    That is not the same.  Nontrivial problems require multiple passes
> > over your data with multiple calls.  A simple:
> >     struct.unpack('H3G3G', st)
> 
> My problem with that use case is that I've never had it, and have
> never seen an app that had it.  Since I've been around for decades,
> that triggers a suspicion that it's not a common need.

It may be domain specific.

I've only been using Python for 4 1/2 years, yet I have used such
structs to build socket protocols, databases and search engines, for
both class and contract.  Heck, I find it useful enough that I have
considered donating to the PSF just to see this feature included.


> > Argument:
> >    The struct module has a steep learning curve already, and this new
> > format specifier doesn't help it.
> 
> That's another argument I haven't seen before, but bears an
> hallucinatory resemblance to one I made.  People have wondered how to

This was one argument that Raymond has offered a few times.  In the case
of native alignment issues that seem to be the cause of much frustration
among new struct learners, this particular format specifier doesn't much
apply; it is not native.


> binascii" would be a direct answer to their question, and one that
...

So there is no confusion, I agree with Raymond, Guido, and you, that the
binascii function additions should occur.


> Newbie confusion about how to use struct is common on c.l.py, and is
> especially acute among those who don't know C (just *try* to read the
> struct docs from the POV of someone who hasn't used C).

Good point about the docs regarding not using C.  Does it make sense to
include documentation regarding C structs (perhaps in an appendix) to
help those who have otherwise not experienced C?


> I certainly would like to see more people say they'd *use* the g and G
> codes in struct even if "one shot" functions in binascii were
> available.

<raise hand> <wink>


> I'd also like to see a specific design for binascii functions.  I
> don't think "simple" would be an accurate description of those, if
> they're flexible enough to handle the common use cases I know about. 
> They'd be more like

[snip conversion operations]

Those would work great for packing and unpacking of single longs.

 - Josiah



More information about the Python-Dev mailing list