【问题标题】:Python how to use (variables inside function F1) inside function (F2 which is inside F1)Python如何在函数内使用(函数F1内的变量)(F2在F1内)
【发布时间】:2020-05-19 02:45:11
【问题描述】:
def F1():
    myvar = 1
    myArrayVar = []

    def F2():
        global myvar, myArrayVar # this will be changed by F2()
        myvar = 2
        myArrayVar.append(myVar)
        print(myvar)
    F2()

F1()

所以我在函数中有一个函数。由于 F2() 是递归的,因此我必须将变量存储在外部。

在 C 中,我将两者分开或传递指针,在 Java 中,我将创建对象。但是无论如何,Python 中是否有让我无需太多更改即可快速完成此操作的方法?我不想使用全局变量,myvar 需要保留在F1() 的上下文中

谢谢。

【问题讨论】:

  • 您是否在F2 内修改myvar
  • 是的。我会稍微更新一下问题。

标签: python function recursion scope


【解决方案1】:

你可以使用nonlocal变量:

def F1():
    myvar = 1
    myArrayVar = []

    def F2():
        nonlocal myvar, myArrayVar  # this will be changed by F2()
        myvar = 2
        myArrayVar.append(myvar)

    F2()
    print(myvar)
    print(myArrayVar)

F1()
2
[2]

【讨论】:

    【解决方案2】:

    其实这里只需要myvar 声明一个nonlocal 变量。 myArrayVar 只是一个闭包变量,因为你不需要重新绑定它的名称,它不需要特殊处理。

    def F1():
        myvar = 1
        myArrayVar = []
    
        def F2():
            nonlocal myvar  # allows changes to myvar to be seen by the outer scope
            myvar = 2
            myArrayVar.append(myvar)
            print(myvar)
        F2()
    
    F1()
    

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      相关资源
      最近更新 更多