Хотя манипуляция битами целого числа полезна, часто для сетевых протоколов, которые могут быть указаны до бита, может потребоваться манипуляция более длинными байтовыми последовательностями (которые нелегко преобразовать в одно целое). В этом случае полезно использовать библиотеку bitstring , которая позволяет выполнять побитовые операции с данными - например, можно импортировать строку «ABCDEFGHIJKLMNOPQ» в виде строки или в виде шестнадцатеричного и битового сдвига (или выполнять другие побитовые операции):
>>> import bitstring
>>> bitstring.BitArray(bytes='ABCDEFGHIJKLMNOPQ') << 4
BitArray('0x142434445464748494a4b4c4d4e4f50510')
>>> bitstring.BitArray(hex='0x4142434445464748494a4b4c4d4e4f5051') << 4
BitArray('0x142434445464748494a4b4c4d4e4f50510')
Чтобы сделать то, что вы хотите, оберните вашу строку в круглые скобки:
a = "function(value) { return Math.abs(value);}";
b = eval("("+a+")");
b(-1);