首页 > 解决方案 > Python内部函数中传递变量的区别

问题描述

在 Python 中,以下两个代码都给出相同的结果 c = [0,-10] 之间有区别吗?

def foo1():
    a = [0,1]

    def foo2():
        a[1] = -10

    foo2()
    return a


c = foo1()

def foo1():
    a = [0,1]

    def foo2(b):
        b[1] = -10

    foo2(a)
    return a


c = foo1()

一些评论员认为这个问题可以回答这个问题。但它没有,因为我的问题是关于通过内部函数传递变量,而链接的问题没有。

标签: pythonfunctionvariables

解决方案


第一个,a是一个自由变量,其值取自foo1定义a.

第二个,b是一个局部变量,使用调用foo2时传递给它的参数进行初始化,它是a定义在 中的变量foo1

在每种情况下,您都分配-10给同一列表的第二个“插槽”。


推荐阅读