假设一个场景,我们想要在第一次循环时执行一些额外的操作,普通实现如下:
first = True
for i in range(3):
if first:
print("第一次循环...")
first = False
else:
...
这当然可以正常运行,但是多少感觉有些别扭!
借助 Python 内置的 locals()
函数,巧妙的实现这个需求:
for i in range(3):
if "first" not in locals():
print("第一次循环...")
first = True
else:
...
locals()
会返回当前作用域声明的变量/对象,因此这段代码是这样工作的:
- 每次循环执行时,程序都会检查 first 变量是否已经存在
- 第一次循环时,变量不存在,因此进入 if 分支
- 后续循环时,变量存在,程序会进入 else 分支,直到循环结束