这是错误的说法。a
不是没了。
如果a
没了,你得到的结果不是None
,而是NameError: name 'a' is not defined
.
你这个误解让我有点想起曾经有一个人学C++来找我,问我为什么cout
输出无效,结果工程发给我以后我发现此人根本就什么都没搞懂——他抄了一个简单的实现窗口效果的库,然后弄了个窗口,想当然地认为给cout
的内容同样该在这个窗口中出现。
学程序绝不要想当然。为什么在我提到的这个人的问题中,使用cout
没有输出效果?因为使用cout
的本质是向标准流进行写入,然后控制台程序会把标准流显示出来,但这并不是说cout
的效果直接地就是“显示出所写的内容”。此处也是同理——print()
是“向一个类似于标准流的地方写入东西”,而不是“把东西显示出来”。
在RenPy的控制台中执行函数,得到的结果就是该函数的返回值。对于print()
来讲,其返回值自然是None
. 你可以再定义一个什么都不做,只会单纯返回接收的参数的函数,记为only_return()
,你会发现only_return(a)
在RenPy控制台的输出就是a
的值了。
(当然,对于MAS目前使用的Python 2而言,print
其实不能算是函数,该算是语句,但是此处理解我的意思就好)
根据图片最后两行可以看到store.songs.music_pages[1][-1][1]本身就是None
将它赋值给a 自然a也是None
(我对renpy不是很了解 不知道中间u+路径的意思)
@huhu233
你凭什么这么说?你不能教给大家错误的东西。
你认为图片最后两行表明“store.songs.music_pages[1][-1][1]
本身就是None”,这是错误的,前两行你如何解释?此处最后一行的显示是None
的原因,是因为print()
的返回结果是None
(实际上是print()
没有返回值,这和Python的底层有点关系),不是因为store.songs.music_pages[1][-1][1]
是None
. 你可以试试print(1)
,让print()
直接输出常量,你会发现在RenPy控制台里的显示还是None
.