Python中的混乱;return";陈述
实际上我用kivy.uix.videoplayer moule来播放我的视频,我做了一个函数,在这个函数中我编写了播放视频的代码Python中的混乱;return";陈述,python,return,kivy,Python,Return,Kivy,实际上我用kivy.uix.videoplayer moule来播放我的视频,我做了一个函数,在这个函数中我编写了播放视频的代码 def hi(self): return VideoPlayer(source='it.mp4', state='play') 混淆之处在于,当我使用return时,它可以很好地播放视频,但当我不使用“return”VideoPlayer()时,如下图所示: def hi(self): VideoPlayer(source='it.mp4', sta
def hi(self):
return VideoPlayer(source='it.mp4', state='play')
混淆之处在于,当我使用return
时,它可以很好地播放视频,但当我不使用“return”VideoPlayer()时,如下图所示:
def hi(self):
VideoPlayer(source='it.mp4', state='play')
然后只播放声音,不播放视频,出现错误
[ERROR ] [Image ] Error loading texture it.mp4
在使用return
时,我有点困惑(我一直都是这样)
所以请澄清我的
return
语句。当不再有任何东西引用Python对象时,Python对象会自动删除。通过不返回对象,您基本上确保了没有任何内容引用VideoPlayer
对象,并且在函数返回时删除Python对象
使用return
时,无论调用hi()
方法的是什么,都会存储对返回的VideoPlayer()
实例的引用,使其保持活动状态:
video_player = someinstance.hi()
如果没有返回
,则不会返回任何
。如果您在return
语句中离开,但直接调用someinstance.hi()
,而不将返回值存储在任何位置,您将得到相同的行为;正在删除VideoPlayer()
对象,因为没有对它的引用
Kivy不仅仅是Python;Python对象只是本地数据结构和代码的代理。声音处理程序是从创建
VideoPlayer()
开始的,但没有立即删除对象,因此没有清理。当不再有任何对象引用Python对象时,Python对象会自动删除。通过不返回对象,您基本上确保了没有任何内容引用VideoPlayer
对象,并且在函数返回时删除Python对象
使用return
时,无论调用hi()
方法的是什么,都会存储对返回的VideoPlayer()
实例的引用,使其保持活动状态:
video_player = someinstance.hi()
如果没有返回
,则不会返回任何
。如果您在return
语句中离开,但直接调用someinstance.hi()
,而不将返回值存储在任何位置,您将得到相同的行为;正在删除VideoPlayer()
对象,因为没有对它的引用
Kivy不仅仅是Python;Python对象只是本地数据结构和代码的代理。声音处理程序是在创建
VideoPlayer()
时启动的,但没有在几乎立即删除对象的情况下进行清理。调用完成后,由VideoPlayer
创建的对象将立即进行垃圾收集,因为您尚未保存对该对象的引用。如果不将hi
的返回值赋给任何名称,则可以使用return
语句获得相同的行为。@chepner谢谢VideoPlayer
创建的对象在调用完成后立即进行垃圾回收,因为您尚未保存对它的引用。如果不将hi
的返回值赋给任何名称,则可以使用return
语句获得相同的行为。@chepner ThankyouThanx@martijinpieterstanx@MartijinPieters