为什么我打印下面的代码,在终端里值是None?

#新手提问:为什么我打印下面的代码,在终端里值是None?

def add_shoppingcar (goods_name): 

    uname='admin'
    pword='123456'
    goods=[  ]
    username=input('请输入用户名:')
    password=input('请输入密码:')
    if username == uname and password == pword:
        goods=goods.append(goods_name)
        print(goods)
  else:
        print('用户名或密码错误,请重新输入')
add_shoppingcar('电脑')

img

)

列表的append()方法返回值为None,所以把这个返回值赋给变量goods,那goods的值当然就为None;
博主的本意是想打印出goods这个列表添加新元素之后的列表,所以要把goods = goods.append(goods_name)这行代码改为goods.append(goods_name),这样就可以了。不用再额外赋给变量,因为列表长度本身就是可变的,增加或者删除元素都是改变原有列表,不会生成新列表,也就不存在重新赋给变量这个说法,只需要在修改动作完成之后,继续打印输出原有列表名称就可以。

goods.append(goods_name)


def add_shoppingcar(goods_name):
    uname='admin'
    pword='123456'
    goods=[]
    username=input('请输入用户名:')
    password=input('请输入密码:')
    if username==uname and password==pword:
        goods.append(goods_name)    # list的append方法,返回值是None,一般不会打印返回值
        print(goods)
    else:
        print('用户名或密码错误,请重新输入')
add_shoppingcar('电脑')