How to define a bytes literal in Python 2.x for porting to Python 3.x using 2to3?
Terry Reedy
tjreedy at udel.edu
Sat Jan 1 15:10:44 EST 2011
On 1/1/2011 5:57 AM, Stefan Behnel wrote:
> Terry Reedy, 01.01.2011 11:08:
>> On 1/1/2011 4:08 AM, Baptiste Lepilleur wrote:
>>
>>> Is there a way to mark string literals so that 2to3 automatically
>>> prefixes them with 'b'? Is there a simpler trick?
>>
>> Python 2.7.1 (r271:86832, Nov 27 2010, 18:30:46) [MSC v.1500 32 bit
>> (Intel)] on win32
>> Type "copyright", "credits" or "license()" for more information.
>> >>> b=b'abc'
>> >>> b
>> 'abc'
>>
>> The b prefix does nothing in 2.7. It was specifically added for this type
>> of porting problem.
>
> More precisely, it was added in Python 2.6, so older Python versions
> will consider it a syntax error.
'so' here means 'as a consequence' rather than 'with the intention' ;-).
> To support older Python versions, you need to write your own wrapper
> functions for bytes literals that do nothing in Python 2 and convert the
> literal back to a bytes literal in Python 3. That's ugly, but there's no
> other way to do it.
I think the developers expected that most maintained and updated 2.x
code, especially code targeted at 3.x also, would be migrated to 2.6+.
--
Terry Jan Reedy
More information about the Python-list
mailing list