n = 3
result = [[]] * n
print(result)
# 输出:[[],
# [],
# []]
print(result[0] is result[1] is result[2])
# 输出:True
*
运算符进行复制,这些空列表实际上是指向同一个内存地址的,它们是共享的。
n = 3
result = [[] for _ in range(n)]
print(result)
# 输出:[[],
# [],
# []]
print(result[0] is result[1] is result[2])
# 输出:False
使用列表生成式,我们创建了 n
个独立的空列表,它们在内存中具有不同的地址,对其中一个列表的修改不会影响到其他列表。
Python 中的 with 语句用于异常处理,封装了 try…except…finally 编码范式,提高了易用性。
file = open('./test_runoob.txt', 'w')
file.write('hello world !')
file.close()
以上代码如果在调用 write 的过程中,出现了异常,则 close 方法将无法被执行,因此资源就会一直被该程序占用而无法被释放。
file = open('./test_runoob.txt', 'w')
try:
file.write('hello world')
finally:
file.close()
以上代码我们对可能发生异常的代码处进行 try 捕获,发生异常时执行 except 代码块,finally 代码块是无论什么情况都会执行,所以文件会被关闭,不会因为执行异常而占用资源。