Converting int to bytes in Python 3

I was trying to build this bytes object in Python 3:

b'3\r\n'

so I tried the obvious (for me), and found a weird behaviour:

    >>> bytes(3) + b'\r\n'
    b'\x00\x00\x00\r\n'

Apparently:

    >>> bytes(10)
    b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

I've been unable to see any pointers on why the bytes conversion works this way reading the documentation. However, I did find some surprise messages in this Python issue about adding format to bytes (see also Python 3 bytes formatting):

http://bugs.python.org/issue3982

This interacts even more poorly with oddities like bytes(int) returning zeroes now

and:

It would be much more convenient for me if bytes(int) returned the ASCIIfication of that int; but honestly, even an error would be better than this behavior. (If I wanted this behavior - which I never have - I'd rather it be a classmethod, invoked like "bytes.zeroes(n)".)

Can someone explain me where this behaviour comes from?

That's the way it was designed - and it makes sense because usually, you would call bytes on an iterable instead of a single integer:

    >>> bytes([3])
    b'\x03'

The docs state this, as well as the docstring for bytes:

     >>> help(bytes)
     ...
     bytes(int) -> bytes object of size given by the parameter initialized with null bytes

From: stackoverflow.com/q/21017698