‫哦, 天哪｡
‫屏幕上有一些代码, 看起来非常混乱｡
‫这是一个非常复杂的函数的例子, 你永远不会写出来, 但是它对于练习是很好的｡
‫我们在这里专门讨论这个叫做“非本地”｡
‫它实际上是Python 3中的一个新关键字｡
‫如你所见, 我的涟漪甚至没有注意到它｡
‫因此, 它甚至没有用蓝色突出显示它, 因为它是一个新功能｡
‫但我确实想和你谈谈它, 让你知道它的作用｡
‫非本地关键字用于引用此部分, 即此父本地｡
‫我们可以这样说, 嘿, 我想使用一个不是全局变量的变量, 但它在函数的作用域之外.
‫所以基于这个定义, 试着暂停视频, 看看这个函数会做什么｡
‫我现在就运行它然后再检查代码｡
‫如果我单击“运行”｡
‫这就是我们得到的｡
‫我们来谈谈这个吧｡
‫我们有一个外函数, 我们称之为外函数.
‫所以Python解释器会说, 好的, 我们有一个X变量, 它是外部函数的局部变量｡
‫然后在这里我们要定义一个内部函数, 另一个函数.
‫在这里, 在我们调用它之前, 我们跳到第九行, 说, 好吧, 调用内部函数｡
‫我们回来说, 嘿, 第5行, 我想用非本地X｡
‫那是什么意思？
‫我想使用这个x变量因为它是非本地的也就是说, 我不想创建一个新的x变量.
‫我想从作用域跳到我的父作用域, 我的本地父作用域, 然后获取在那里找到的任何内容｡
‫只要不是全局变量, 任何父变量都可以｡
‫我想抓那个外地人｡
‫现在x是指外部函数｡
‫所以当我们说x等于非局部的时候, 我们就是在给这个新字符串赋值｡
‫替换这个local, 这样当我们打印interx的时候,
‫我们得到的是非本地的, 但是当我们打印外部的x的时候, 我们已经用非本地关键字修改了这个外部作用域, 所以它也变成了非本地的｡
‫如果我删除这一行并将其注释掉, 然后单击“运行”｡
‫你看到区别了吗？
‫现在我们有了内部的非局部变量, 但是外部的局部变量还没有被修改, 因为这是一个新的变量｡
‫同样, 我认为这实际上会使代码变得比实际需要的更复杂｡
‫所以在一些特殊的情况下, 你可能会想使用这个, 但是如果你能让你的代码变得可预测的话,
‫你就可以避免使用非本地的和全局的｡
‫请注意, 它们存在是有原因的, 因为它们在某些情况下是有用的｡
‫尽管如此, 请记住, 让您的代码可预测, 让您的代码干净, 我将在下一个视频中看到您｡