python-3.x 函数内部列表的更改保留在函数外部

rdrgkggo  于 2023-11-20  发布在  Python
关注(0)|答案(1)|浏览(82)

我们有下面的例子,但它似乎是错误的。

What will be the output of the following Python code?

def a(b):
    b = b + [5]
 
c = [1, 2, 3, 4]
a(c)
print(len(c))

字符串
a)4
B)5
c)1
(3)抛出异常
答案:a
说明:由于列表是可变的,所以在函数中对列表所做的任何更改都会反映到函数之外。
所以B变成了[1,2,3,4,5],那么,B是局部变量还是B真的是c?如果是后者,那么答案不应该是5吗?
当我尝试这个答案是4,但然后是解释只是错误的或我错过了什么?

iszxjhcz

iszxjhcz1#

1.首先,这个函数没有任何return语句,所以即使执行了a(c),它也不会给出任何给予输出。
1.这里a(c)被执行。但是这个函数的输出与列表c没有联系。他们只问了列表c的长度。
下面的代码是这样的:

def a(b):
    b = b + [5]
    return b
 
c = [1, 2, 3, 4]
c = a(c)
print(len(c)) #output :5

字符串
在上面的代码中,有一个return语句,返回值被声明为c,所以第二个列表的元素被添加到c中,并给出长度为5。
同样,即使列表在函数外部也没有关系。函数可以改变它的值。参见下面的例子:

c = [1, 2, 3, 4]
def a(b):
    return c+b
d = a([5])
print(d) #output:[1, 2, 3, 4, 5]


可能会有一个问题,声明c的顺序是否重要。是的,它很重要,但c应该在调用函数之前声明。例如,即使下面的代码也可以工作。

def a(b):
    return c+b
c = [1, 2, 3, 4]
d = a([5])
print(d) #output : [1, 2, 3, 4, 5]


但是当你在调用函数后声明c时,它会给出给予错误,说c没有定义

def a(b):
    return c+b
d = a([5])
c = [1, 2, 3, 4]
print(d) # error : c is not defined

相关问题