In python these three commands print the same emoji:
print \"\\xF0\\x9F\\x8C\\x80\"
The other answers describe how Unicode characters can be encoded or embedded as literals in Python 2.x. Let me answer your more meta question, "it's not obvious to me how \xF0\x9F and 0001 and d83c are the same number?"
The number assigned to each Unicode "code point"--roughly speaking, to each "character"--can be encoded in multiple ways. This is similar to how integers can be encoded in several ways:
0b1100100 (binary, base 2)0144 (octal, base 8)100 (decimal, base 10)0x64 (hexadecimal, base 16)Those are all the same value, decimal 100, with different encodings. The following is a true expression in Python:
0b1100100 == 0144 == 100 == 0x64
Unicode's encodings are a bit more complex, but the principle is the same. Just because the values don't look the same doesn't mean they don't signify the same value. In Python 2:
u'\ud83c\udf00' == u'\U0001F300' == "\xF0\x9F\x8C\x80".decode("utf-8")
Python 3 changes the rules for string literals, but it's still true that:
u'\U0001F300' == b"\xF0\x9F\x8C\x80".decode("utf-8")
Where the explicit b (bytes prefix) is required. The u (Unicode prefix) is optional, as all strings are considered to contain Unicode, and the u is only permitted in 3.3 and later. The multi-byte combo characters...well, they weren't that pretty anyway, were they?
So you presented various encodings of the Unicode CYCLONE code point, and the other answers showed some ways to move between code points. See this for even more encodings of that one character.