函数在控制台中运行两次(python3,eclipse)

时间:2018-03-21 06:08:32

标签: eclipse python-3.x macos

嗨!你能解释为什么函数在控制台中运行两次吗?

def changeList(myList1):
    myList2 = myList1.append(4)
    print(myList2)
    return

myList1 = [1,2,3]
changeList(myList1)
print (myList1)

控制台中的结果:

None
[1, 2, 3, 4]

这是否意味着函数运行两次,因为控制台中出现“无”?

3 个答案:

答案 0 :(得分:2)

tl; dr - 该函数只运行一次 - 有两个print语句产生输出

该功能运行两次:实际上,它只运行一次。控制台中的输出来自程序中包含的两个print()调用:一个位于函数changeList()内,一个位于函数外(print(myList1))。

None正在打印到控制台,因为函数return中的changeList()语句没有返回任何内容 - 没有值要返回:

  

如果存在表达式列表,则对其进行评估,否则为None   取代

[取自Python 3.6文档]

看到return语句不做任何事情,你可以安全地将其删除 - 无论如何,该功能仍然会结束。

希望能帮到你!

答案 1 :(得分:2)

该功能仅运行一次。您将一个项目附加到列表并尝试存储在其他列表中,只需分配一个附加项目的列表,该项目将返回None并分配给myList2。所以,代码是错误的,因为append()函数返回的是无。

我认为你不应该这样做,这是正确的代码: 评论是否解决了您的问题。

def changeList(myList1):
    myList2=[]
    myList2.extend(myList1)
    myList2.append(4)
    print(myList2)
    return

myList1 = [1,2,3]
changeList(myList1)
print (myList1)

答案 2 :(得分:1)

因为在changeList的函数定义中,有一个print语句,然后调用changeList后的另一个print语句。该函数实际只运行一次,但您只需要两个单独的打印语句。