欢迎回来｡
让我们试着回答一些你可能有的问题｡
例如, 参数如何？
如果我做参数呢？
让我们在这里说B｡
当我像这样使用B时, 这个参数是什么？
所以我们说打印｡
是的｡
在这里我会用300这个数字来进行混淆运算｡
如果我运行这个｡
这很管用｡
这是因为B, 参数是局部作用域的一部分｡
也就是说, 它是这个的一部分｡
因此, 参数被视为局部变量｡
我们可以在函数内部使用它, 但不能在函数外部使用它｡
从技术上讲, 当我们定义函数时, 我们让解释器知道, 嘿, B将是一个局部变量｡
OC这个怎么样？
如果我们有这个呢？
但是我想确保在我的函数里面我实际上引用的是全局变量｡
有没有办法只使用这个值而不创建一个新变量？
让我们举一个更好的例子｡
假设我想创建一个计数器｡
所以我们会得到total等于零｡
然后在这里｡
我要说的是定义计数｡
这个函数是total｡
加等于一｡
所以我们每次加count的时候, 都会加0加1, 然后再加1,
如此类推｡
所以我们会在这段代码的末尾返回total｡
所以如果我在这里运行, 打印计数｡
看看会发生什么｡
我要打了｡
快跑啊
在赋值之前引用了一个错误的局部变量total, 这是因为well count不知道total｡
您正在尝试使用total, 但我们尚未分配任何内容｡
但是我们要从外面的世界来跑总｡
因为如果我在这里计算总数等于零, 然后运行计数｡
那太好了｡
我有一个｡
但如果我想多次运行计数呢？
如果我想运行计数, 比如说运行三次, 那么计数总数将是三？
让我们在最后一张上打印｡
然后单击“Run（运行）”｡
我还是得到了一个因为每次我们运行这个函数, 我们都把总数重置为零｡
这不是很有用, 是吗？
所以我们可以解决这个问题的一个方法就是使用Python中的global关键字｡
global表示使用全局变量total, 如果它存在的话这样我就不用创建一个新的变量了, 我可以使用全局变量total.
看看这个｡
我得到了一个无效的语法, 因为我们首先要说全局总数,
然后我们可以说总数加等于一｡
如果我运行这个｡
一副那样的表情｡
我们有一个合适的计数器, 所以global是我们访问这个全局变量的一种方式｡
然而, 我认为这实际上不是一个好的方法, 因为当你开始添加全局变量时,
所有这些不同的宇宙都在访问彼此的变量时, 它会变得非常混乱｡
一种更好的方法是依赖注入, 这是它的简化版本｡
但我们的想法是, 不像这样访问函数外的变量, 当文件变得越来越大时,
这会变得非常非常复杂, 我们要做的是.
这件事
全部｡
像这样, 我们创建一个参数, 然后传入该参数｡
或者在这里争论｡
但正如你所看到的, 它仍然是1, 因为当我们打印第三个总数时, 嗯, 这是永远不会改变的｡
这是一个全球零｡
所以我们可以这样做｡
我们可以说count total, 我们再数一次｡
然后再数一遍｡
如果我运行这个｡
我得到三个｡
我知道你在想什么｡
这完全是疯了｡
看起来很混乱｡
看看这些括号｡
但让我给你看看我们实际上做了什么｡
我们能够分离依赖关系或此count函数对外部全局作用域的影响, 而只关注其健康状况｡
我们所要做的就是说, 嘿, 我要你给予一个总数为零的计数｡
然后, 它的值是1｡
然后我们计算一加一等于二, 然后再计算二加一等于三｡
这样我们就可以不用使用全局关键字来计数了, 我认为这样更好｡
提醒你一下, 如果这是你第一次看到这个, 它可能会变得有点棘手｡
但至少这样你知道有不同的方式做的事情｡
我想给你们看的另一个词是非本地的｡
但对于这一点, 让我们休息一下, 我会在下一个视频中看到你｡