我正在遵循MITx的6.00.1x,幻灯片(如下所示)使我感到困惑。具体来说,为什么const express = require('express');
const router = express.Router();
router.get('/test', (req, res) => res.json({ msg: 'Users Works' }));
module.exports = router;
作为未绑定的本地错误返回。
以下是发布的进一步说明:
如果尚未在本地定义
h(y)
与n += y
相同,则由于n = n + y
或已将其声明为非本地或全局变量,将失败
- 解释器首先评估
n
的右侧,因此找到=
在全局范围内(因此可读),并在其中添加n
,然后- 解释器尝试将全局
y
的结果绑定到上的n + y
n
的左侧。但是因为=
不是本地的,而且还不是 声明为全局,此尝试的绑定会产生错误。
第一个要点很简单。在第二篇文章中,我了解到解释器正在尝试将n
的结果绑定到n + y
。 n
不是本地的,没关系;但是它是在全局范围内声明的,不是吗?具体来说,n
声明了变量。
这里的问题似乎是该函数试图将x=5
(或本例中的n
)绑定到全局范围,但这是不允许的-我知道绑定是从本地进行的不允许将作用域设置为全局范围,但是Python是否不会在本地范围内自动实例化x
/ n
并将其绑定x
?