首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python如何使用(函数F1内部的变量)内部函数(F1内部的F2)

Python如何使用(函数F1内部的变量)内部函数(F1内部的F2)
EN

Stack Overflow用户
提问于 2020-05-19 10:45:12
回答 2查看 186关注 0票数 3
代码语言:javascript
复制
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()的上下文中

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-19 10:53:08

您可以使用nonlocal变量:

代码语言:javascript
复制
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()
代码语言:javascript
复制
2
[2]
票数 3
EN

Stack Overflow用户

发布于 2020-05-19 10:53:32

实际上,这里只需要将myvar声明为nonlocal变量。myArrayVar只是一个闭包变量,因为您不需要重新绑定名称,因此不需要特殊处理。

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61882386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档