我想回答一个问题, 你们可能有,
也可能没有, 但这是我花了很多年才弄明白的, 那就是为什么不把所有的东西都当作全局变量.
我的意思是, 所有这些混乱谁能接触到谁｡
如果一切都在主页上, 那该有多容易？
我们所有的信息, 所有的数据都在我们的全球范围内, 这样一切都可以访问, 这不是更容易吗？
你说得对｡
我的意思是, 这会让所有的头痛消失, 对不对？
但你必须记住, 机器没有无限的能力, 没有无限的CPU, 没有无限的内存｡
它们的资源都有限｡
作为程序员, 我们必须意识到我们使用了什么资源, 因为有时这会花费我们的钱,
有时它们会使我们的计算机崩溃｡
范围就是一个很好的例子｡
例如, 这里的代码, 当这个函数运行时,
我们在内存中为X变量创建了一个位置｡
所以我们在电脑里有一个书架, 当我们调用这个函数时, X指向本地｡
然后当我们说非本地的时候, 我们说的是不要为我们创造另一个书架｡
只要使用我们已经拥有的并将其分配为非本地即可｡
如果我们没有这一行, 到第七行的时候, 我们已经在内存中放置了x = local和x =
non-local｡
所以我们现在在内存中有两个位置｡
这不是什么大事, 因为在这个时代, 我们确实有很多记忆｡
但随着程序越来越大, 这确实变得有点问题｡
那么函数呢？
我的意思是, 我们学习到功能允许我们不重复自己, 并能够调用或多次｡
但是函数的另一个好的用途是, 一旦我们调用这个函数, 并且所有这些都完成了,
计算机和python解释器专门销毁了所有这些内存｡
也就是说, 一旦我们完成了外部函数, 我就不能在这里调用print x了｡
它会给予我一个错误｡
它会说, 我不知道X是什么, 为什么？
因为在我们调用这个函数之后, 我们称之为垃圾收集器的python会说, 嘿,
看起来我们完成了这个函数｡
我看到了这个X变量, 我们不会用到这个X变量, 因为我们已经完成了这个函数｡
所以我要收集这些垃圾, 然后把它们扔出去｡
所以我要清空那个内存柜, 这样其他资源或其他程序就可以使用它｡
这是一个非常好的特性, Python会自动删除这些内容, 这样就不会阻塞计算机的内存｡
这就是为什么范围是有用的｡
我们不需要像我提到的那样详细地考虑它,
但是很高兴知道它在那里, 这样你的程序就不会占用很多内存, 它们可以有效地运行｡
这是一个超前的话题, 但我确实想把它包括在这里,
这样你就可以思考为什么程序是这样设计的｡
好吧, 我会的
我现在不说话了｡
下一个视频里见｡
再见, 再见, 再见