From 262035c4c0bbee26f3e1f5e31291be3ab4d763d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E6=99=A8?= <362864550@qq.com> Date: Sun, 25 Nov 2018 18:24:06 +0800 Subject: [PATCH] EX.The out of scope variable --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index bd7e47d..3c0d82d 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ So, here we go... - [> Beware of default mutable arguments!/当心默认的可变参数!](#-beware-of-default-mutable-arguments当心默认的可变参数) - [> Catching the Exceptions/捕获异常](#-catching-the-exceptions捕获异常) - [> Same operands, different story!/同人不同命!](#-same-operands-different-story同人不同命) - - [> The out of scope variable](#-the-out-of-scope-variable) + - [> The out of scope variable/外部作用域变量](#-the-out-of-scope-variable外部作用域变量) - [> Be careful with chained operations](#-be-careful-with-chained-operations) - [> Name resolution ignoring class scope](#-name-resolution-ignoring-class-scope) - [> Needle in a Haystack](#-needle-in-a-haystack) @@ -1722,7 +1722,7 @@ a += [5, 6, 7, 8] --- -### > The out of scope variable +### > The out of scope variable/外部作用域变量 ```py a = 1 @@ -1742,10 +1742,10 @@ def another_func(): UnboundLocalError: local variable 'a' referenced before assignment ``` -#### 💡 Explanation: -* When you make an assignment to a variable in scope, it becomes local to that scope. So `a` becomes local to the scope of `another_func`, but it has not been initialized previously in the same scope which throws an error. -* Read [this](http://sebastianraschka.com/Articles/2014_python_scope_and_namespaces.html) short but an awesome guide to learn more about how namespaces and scope resolution works in Python. -* To modify the outer scope variable `a` in `another_func`, use `global` keyword. +#### 💡 说明: +* 当你在作用域中对变量进行赋值时, 变量会变成该作用域内的局部变量. 因此 `a` 会变成 `another_func` 函数作用域中的局部变量, 但它在函数作用域中并没有被初始化, 所以会引发错误. +* 可以阅读[这个](http://sebastianraschka.com/Articles/2014_python_scope_and_namespaces.html)简短却很棒的指南, 了解更多关于 Python 中命名空间和作用域的工作原理. +* 想要在 `another_func` 中修改外部作用域变量 `a` 的话, 可以使用 `global` 关键字. ```py def another_func() global a