ji9099 发表于 2020-6-7 11:30:47

关于函数中局部变量为list的返回值问题

def fun1():
    a = 0
    return a
def fun2():
    b = []
    return b.append(1)    fun1返回0没有问题 但是fun2为何返回的是None,而不是呢? 求大神解释 是否和list类型的存储方式有关?

liuzhengyuan 发表于 2020-6-7 11:31:52

列表内置函数没有返回值
所以得这样

def fun1():
    a = 0
    return a
def fun2():
    b = []
    b.append(1)
    return b

suchocolate 发表于 2020-6-7 11:54:12

return b.append(1)   
是先用append方法增加元素,加完之后,append方法的返回值给return用作函数返回。
但是这个list内置的append方法是没有返回值的,所以默认就是None,所以函数收到的也是None,所以返回None
2楼的说法不对,不是所有内置方法都没有返回值,这个最好看看官方手册,有说return的就会有返回值,没说的默认才是None。
官方手册:https://docs.python.org/zh-cn/3.6/tutorial/datastructures.html#more-on-lists

ji9099 发表于 2020-6-7 12:05:28

谢谢各位 明白了
页: [1]
查看完整版本: 关于函数中局部变量为list的返回值问题