The decision was made in order to be able to cast back and forth between
known formats. Otherwise one would be able to cast from '<d' to 'B'
but not from 'B' to '<d'.
Python 3.4 will have support for all formats in struct module syntax,
but all non-native formats will be *far* slower than the native ones.
You can still pack/unpack directly using the struct module:
>>> import ctypes, struct
>>> d = ctypes.c_double()
>>> m = memoryview(d)
>>> struct.pack_into(m.format, m, 0, 22.7)
>>> struct.unpack_from(m.format, m, 0)[0]
22.7 |