小编net*_*yal的帖子

Python,如何更改父作用域中变量的值?

例如:assginment语句将声明一个新的局部变量.

foo = 'global'
def func1():
    foo = 'func1'
    def func2():
        foo = 'local variable in func2'
Run Code Online (Sandbox Code Playgroud)

使用全局声明将在全局使用foo:

def func2():
    global foo
    foo = 'global changed in func2'  #changed the foo value in global scope
Run Code Online (Sandbox Code Playgroud)

如何在func1范围中更改变量foo?
谢谢你的帮助.

编辑:

谢谢Brandon Craig Rhodes,我终于理解了你的意思.

如果嵌套的范围超过3个,我可以将变量存储在列表中.

foo = ['global', 'function1', 'function2']
def func1():
    foo[1] = 'func1'
    def func2():
        foo[2] = 'func2'
        foo[1] = 'func1 modified in func2'
Run Code Online (Sandbox Code Playgroud)

我实际上只使用了一个全局变量.


所以,如果有两个嵌套函数,我们可以使用

nonlocal foo 
Run Code Online (Sandbox Code Playgroud)

global foo 
Run Code Online (Sandbox Code Playgroud)

如果嵌套了三个以上的函数,
并且每个函数在其他函数范围内使用变量,
为什么不声明全局列表变量?
谢谢你的帮助!!!

python scope global python-nonlocal

8
推荐指数
2
解决办法
3748
查看次数

javascript,为什么不删除var关键字?

几乎所有的javascript书都说

在声明变量时总是使用var关键字,因为没有var,变量将被声明为全局变量.

那么,为什么不删除var关键字,将默认声明作为本地范围?像Python一样,如果你想使用全局变量,你写:

global foo;
Run Code Online (Sandbox Code Playgroud)

我们几乎所有时间都使用局部变量,不是吗?有充分的理由吗?谢谢你的帮助.


编辑:感谢您的所有帮助,我认为必须有一个很好的理由表明使用var更好,所以我没有尝试改变它的语言.

javascript scope var

4
推荐指数
2
解决办法
893
查看次数

Python web.py模板,如何转义(.)点

在web.py模板中:index.html我写道:

$def with(s)
<img src="$s.filename.png" />
Run Code Online (Sandbox Code Playgroud)

s.filename的值是"picuture"所以我想要打印

<img src="picture.png" />
Run Code Online (Sandbox Code Playgroud)

但是我怎么能告诉web.py模板系统不要使用$ s.filename.png只使用$ s.filename并添加".png"呢?

python templates escaping web.py

1
推荐指数
1
解决办法
570
查看次数