我们有下面的例子,但它似乎是错误的。
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,但然后是解释只是错误的或我错过了什么?
1条答案
按热度按时间iszxjhcz1#
1.首先,这个函数没有任何return语句,所以即使执行了a(c),它也不会给出任何给予输出。
1.这里a(c)被执行。但是这个函数的输出与列表c没有联系。他们只问了列表c的长度。
下面的代码是这样的:
字符串
在上面的代码中,有一个return语句,返回值被声明为c,所以第二个列表的元素被添加到c中,并给出长度为5。
同样,即使列表在函数外部也没有关系。函数可以改变它的值。参见下面的例子:
型
可能会有一个问题,声明c的顺序是否重要。是的,它很重要,但c应该在调用函数之前声明。例如,即使下面的代码也可以工作。
型
但是当你在调用函数后声明c时,它会给出给予错误,说c没有定义
型