【问题标题】:Python3 variables in functions函数中的 Python3 变量
【发布时间】:2016-02-01 19:26:59
【问题描述】:
def a():
    b = 1
    def x():
        b -= 1
    if something is something:
        x()
a()

我想要在这里将 ba() 更改为 x() 我试过用;

def a():
    b = 1
    def x():
        global b
        b -= 1
    if something is something:
        x()

a()

但是,正如我所料,这告诉我全局 b 没有定义。

b 需要在 x() 运行后更改,如果第二次调用 x() b 需要是 x() 将其设置为 - 0 而不是它最初在 @ 中设置的值987654331@ - 1.

【问题讨论】:

    标签: python function variables python-3.x global-variables


    【解决方案1】:

    要更改包含范围内定义的变量的值,请使用nonlocal。此关键字类似于global 的意图(表示该变量应被视为全局范围内的绑定)。

    所以尝试一下:

    def a():
        b = 1
        def x():
            # indicate we want to be modifying b from the containing scope
            nonlocal b
            b -= 1
        if something is something:
            x()
    
    a()
    

    【讨论】:

    • 您能否详细说明一下非本地到底是什么。对 Python 非常陌生(一般来说编程很好)
    • 比你,这个解释很完美
    【解决方案2】:

    这应该可行:

    def a():
        b = 1
        def x(b):
            b -= 1
            return b
        b = x(b)
        return b
    a()
    

    【讨论】:

    • 谢谢,但我希望能找到一种不使用“return”的方法
    猜你喜欢
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2019-04-04
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多