Python 2'yi kullanıyorsunuzdur ve varsayılan kodlama davranışıyla ilişkili olabilir. Setinizde depolanan değer "kodlanmış" değerdir ve print
(bu nesnenin temelindeki __repr__
ve/veya __str__
yöntemlerine dayanır) kullandığınızda, kodu çözülmüş/biçimlendirilmiş çıktıyı alırsınız (varsayılan sistem kodlamasına göre).
Sen) piton 3'te, kodlama varsayılan olarak utf-8
(olduğunu yani. Varsayılan olarak "yaratılmış herhangi bir dize (... fonksiyonu sys.getdefaultencoding()
Not ile kullanılan varsayılan kodlaması hakkında bilgi edinebilirsiniz Unicode olarak depolanır ", documentation'a göre) ve tam olarak aynı davranışa sahip olmayacaksınız (python 2 snippet'inde, python set
s üzerinde bulunan karma değerler, bunlara dayandığından, giriş dizeniz kodlanmışsa aynıdır Not:
Python 2:
>>> a = b'Path\xc3\xa9'
>>> a
'Path\xc3\xa9'
>>> print(a)
Pathé
>>> sys.getdefaultencoding()
'ascii'
>>> hash('Pathé')
8776754739882320435
>>> hash(b'Path\xc3\xa9')
8776754739882320435
Python 3:
>>> a = b'Path\xc3\xa9'
>>> a
b'Path\xc3\xa9'
>>> print(a)
b'Path\xc3\xa9'
>>> print(a.decode())
Pathé
>>> sys.getdefaultencoding()
'utf-8'
>>> hash("Pathé")
1530394699459763000
>>> hash(b"Path\xc3\xa9")
1621747577200686773