前言
全局与本地储存区
之所以写这篇文章,源自于我遇到的一个问题:
python 中我们可以通过 exec 执行一段字符串构成的代码:
- 可以看到 exec 是可以影响当前代码的变量,为了在一个干净环境下执行,我一开始是这样写:
但是,最近我写一个小工具,需要使用 exec 执行一段比较完整的代码,却出了问题,下面用一个简单例子表示:
为什么会报错呢?
问题的原因一点都不简单,涉及的知识点:
- Python 是如何保存运行时的数据(各种变量的赋值与获取)
- 运行帧栈(frame)概念
本文对 frame 不作深入介绍
全局与本地储存区
先看一段非常简单的代码: