Он также изменяет то, что pydoc покажет:
module1.py
a = "A"
b = "B"
c = "C"
module2.py
__all__ = ['a', 'b']
a = "A"
b = "B"
c = "C"
$ pydoc module1
Help on module module1: NAME module1 FILE module1.py DATA a = 'A' b = 'B' c = 'C'
$ pydoc module2
Help on module module2: NAME module2 FILE module2.py DATA __all__ = ['a', 'b'] a = 'A' b = 'B'
Я объявляю __all__
во всех моих модулях, а также подчеркивая внутренние детали, это действительно помогает при использовании вещей, которые вы никогда раньше не использовали живые интерпретаторы.
Вы можете маскировать все по 0xFFFFFFFF
:
>>> m = 0xFFFFFF00
>>> allf = 0xFFFFFFFF
>>> ~m & allf
255L
Это модуль, который я создал очень давно, и он может быть вам полезен:
Он обеспечивает по крайней мере CIDR
класс с арифметикой подсетей. Проверьте контрольные примеры в конце модуля для примеров.
Вы также можете сделать xor с 0xFFFFFFFF, что эквивалентно «беззнаковому дополнению».
>>> 0xFFFFFF00 ^ 0xFFFFFFFF
255
Вы можете использовать ctypes и его c_uint32
:
>>> import ctypes
>>> m = 0xFFFFFF00
>>> ctypes.c_uint32(~m).value
255L
Итак, я сделал приведение ~m
к 32-битному целому числу без знака и получение его значения обратно в формате Python.