Python中的混淆"返回"语句

0 python return kivy

实际上我用kivy.uix.videoplayer moule来播放我的视频,并且我创建了一个函数,我在其中编写了播放视频的代码,

def hi(self):
    return VideoPlayer(source='it.mp4', state='play')
Run Code Online (Sandbox Code Playgroud)

困惑是当我使用return它时播放视频非常好,但是当我不使用"return"VideoPlayer()时,如下所示:

def hi(self):
    VideoPlayer(source='it.mp4', state='play')
Run Code Online (Sandbox Code Playgroud)

然后只有声音播放,视频没有显示,错误来了;

[ERROR  ] [Image       ] Error loading texture it.mp4
Run Code Online (Sandbox Code Playgroud)

我在使用中有点困惑return(我一直都是)所以请告诉我关于return声明.

Mar*_*ers 5

当没有任何引用它们时,Python对象会自动删除.通过不返回对象,您基本上确保没有引用该VideoPlayer对象的任何内容,并且在函数返回时删除Python对象.

当您使用return,想必任何调用hi()存储到返回的参考方法VideoPlayer()实例,保持它活着:

video_player = someinstance.hi()
Run Code Online (Sandbox Code Playgroud)

没有return None返回而是返回.如果你留在return语句中,但someinstance.hi()直接调用而不将返回值存储在任何地方,你会得到相同的行为; VideoPlayer()要删除的对象,因为没有对它的引用.

Kivy不只是 Python; Python对象只是本机数据结构和代码的代理.声音处理程序从VideoPlayer()创建时开始,但几乎没有立即删除对象.