为何Python代码print("Result : "),q执行后输出包含None?
嘿,这个问题的根源在于你对Python中print函数的返回值,以及表达式求值的逻辑理解有点小误区,我来给你拆解清楚:
print()函数本身返回None
Python的print()函数的作用是把内容输出到控制台,但它没有任何返回值——也就是说,当你调用print("Result : ")之后,它完成了输出动作,但给调用者返回的结果是None。逗号分隔的表达式会生成元组
你写的print("Result : "), q,在Python中这是由两个表达式组成的语句:第一个是print("Result : "),第二个是变量q。用逗号分隔多个表达式时,Python会把这些表达式的结果打包成一个元组。这里第一个表达式的结果是print返回的None,第二个是你修改后的列表q,所以这个元组就是(None, ['hello', 'there', 'How r u'])。交互式环境会自动打印表达式结果
如果你是在Python的交互式环境(比如命令行shell或者IDLE)中运行这段代码,当你输入一个表达式(不是赋值语句或者纯粹的函数调用),环境会自动把这个表达式的结果打印出来。所以你看到的输出其实是两部分的组合:print("Result : ")输出的Result :,加上交互式环境打印的元组(None, ['hello', 'there', 'How r u']),最终就呈现成了你看到的样子。
正确的写法应该是怎样的?
如果你想把Result : 和列表q一起输出,应该把q作为print函数的参数传进去,而不是用逗号分开:
q = ["hello", "there"] q.insert(2, "How r u") print("Result : ", q)
这样执行后,输出就是Result : ['hello', 'there', 'How r u'],不会出现None啦~
内容的提问来源于stack exchange,提问作者Harsh Agarwal

