Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的混乱;return";陈述_Python_Return_Kivy - Fatal编程技术网

Python中的混乱;return";陈述

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

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

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