Python中的困惑"返回"声明

时间:2017-09-15 17:22:12

标签: python return kivy

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

def hi(self):
    return VideoPlayer(source='it.mp4', state='play')

令人困惑的是,当我使用return时,它可以很好地播放视频,但是当我不使用&#34时,返回" VideoPlayer()如下所示:

def hi(self):
    VideoPlayer(source='it.mp4', state='play')

然后只播放声音,视频未显示且出现错误;

[ERROR  ] [Image       ] Error loading texture it.mp4

我在使用return(我一直都是)时有点困惑 所以请告诉我return声明。

1 个答案:

答案 0 :(得分:5)

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

使用return时,大概是调用hi()方法存储了对返回的VideoPlayer()实例的引用,保持活着:

video_player = someinstance.hi()

不返回return None。如果您留在return语句中,但直接致电someinstance.hi()而不将返回值存储在任何位置,则会获得相同的行为;要删除VideoPlayer()对象,因为没有对它的引用。

Kivy不是只是 Python; Python对象只是本机数据结构和代码的代理。声音处理程序在创建VideoPlayer()时启动,但是几乎没有立即删除对象,因此没有清理它。