frozenset:
یکی دیگه از built-in تایپ های پایتون frozenset ها هستند که شاید کمتر راجع بهشون حرف زده شده باشه.
s1 = {'a', 'b', 'c'}
s2 = frozenset(['a', 'b', 'c'])
print(s1)
print(s2)
output :
{'b', 'a', 'c'}
frozenset({'c', 'b', 'a'})
خیلی شبیه set ها هستن و میشه گفت اکثر کد های پیاده سازیشون مشابه هم نوشته شده پس هیچگونه بهینگی ای نسبت به هم ندارن. عملکردی شبیه set ها هم دارن و به جز متد هایی که باعث mutate شدن set ها میشد مثل add و remove و ... بقیه متد ها رو دارن.
این immutable بودن frozenset ها این قابلیت رو بهشون میده تا hashable باشن و در نتیجه بشه ازشون به عنوان کلید توی دیکشنری و یا یک عضوی داخل set استفاده کرد:
s1 = {'a', 'b', 'c'}
d = {s1: None} # Error
s2 = frozenset(['a', 'b', 'd'])
d = {s2: None} # Fine