python散装笔记——148:不可变类型int float str tuple和frozenset
1: 字符串的单个字符不可赋值
foo = "bar"
foo[0] = "c" # 错误
不可变变量的值一旦创建后就不能被改变。
- 字符串是不可变的,这意味着一旦字符串被创建,其内容不能被修改。
- 尝试修改字符串的某个字符会导致TypeError。
示例
foo = "bar"
try:
foo[0] = "c"
except TypeError as e:
print(f"Error: {e}")
# 输出:Error: 'str' object does not support item assignment
2: 元组的单个成员不可赋值
foo = ("bar", 1, "Hello!",)
foo[1] = 2 # 错误!
第二行会返回一个错误,因为元组成员一旦创建后就不可以被赋值。这是由于元组的不可变性。
- 元组也是不可变的,这意味着一旦元组被创建,其元素不能被修改。
- 尝试修改元组的某个元素会导致TypeError。
示例
foo = ("bar", 1, "Hello!")
try:
foo[1] = 2
except TypeError as e:
print(f"Error: {e}")
# 输出:Error: 'tuple' object does not support item assignment
3: frozenset是不可变的,且不可赋值
foo = frozenset(["bar", 1, "Hello!"])
foo[2] = 7 # 错误
foo.add(3) # 错误
第二行会返回一个错误,因为frozenset成员一旦创建后就不可以被赋值。第三行会返回错误,因为frozenset不支持可以操作成员的函数。
- frozenset是不可变的集合类型,这意味着一旦frozenset被创建,其元素不能被修改。
- frozenset不支持添加或删除元素的操作,尝试这些操作会导致AttributeError。
示例
foo = frozenset(["bar", 1, "Hello!"])
try:
foo[2] = 7
except TypeError as e:
print(f"Error: {e}")
# 输出:Error: 'frozenset' object does not support item assignment
try:
foo.add(3)
except AttributeError as e:
print(f"Error: {e}")
# 输出:Error: 'frozenset' object has no attribute 'add'