Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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
yield在python中返回None?_Python_Twisted - Fatal编程技术网

yield在python中返回None?

yield在python中返回None?,python,twisted,Python,Twisted,我在两个文件中有两个python类 文件:LdapConnection,类:LdapClass(),方法:getMachines(self) 上述打印语句打印机器列表中的所有实体 文件:Twisted,类:缓存,方法:loadSettings(自) 在上面的类中,我的打印打印None。我做错了什么?看起来您的loadSettings()例程生成的是getMachines()生成器,而不是生成器的结果。也许前者应该执行“yield from”?看起来您的loadSettings()例程

我在两个文件中有两个python类

  • 文件:LdapConnection,类:LdapClass(),方法:getMachines(self)

上述打印语句打印
机器列表中的所有实体

  • 文件:Twisted,类:缓存,方法:loadSettings(自)


在上面的类中,我的打印打印
None
。我做错了什么?

看起来您的
loadSettings()
例程生成的是
getMachines()
生成器,而不是生成器的结果。也许前者应该执行“
yield from
”?

看起来您的
loadSettings()
例程生成的是
getMachines()
生成器,而不是生成器的结果。也许前者应该在
getMachines()
中执行“
yield from
”?

,不要
yield self.machineList

在由
defer.inlineCallbacks
修饰的方法中,yield所做的是在参数(一个
defer.Deferred
对象)用一个值回调之前产生执行(如果它不是
defer.Deferred
,它将继续)。(它类似于Python 3中新的
wait
关键字。)您在
loadSettings()
中正确地使用了它

getMachines()
中,没有
defer.Deferred
;您有一个
列表
,因此它将继续。要将该值返回给调用方,请在方法末尾调用
returnValue(self.machineList)

getMachines()
中,不要
生成self.machineList

在由
defer.inlineCallbacks
修饰的方法中,yield所做的是在参数(一个
defer.Deferred
对象)用一个值回调之前产生执行(如果它不是
defer.Deferred
,它将继续)。(它类似于Python 3中新的
wait
关键字。)您在
loadSettings()
中正确地使用了它


getMachines()
中,没有
defer.Deferred
;您有一个
列表
,因此它将继续。要将该值返回给调用者,请在方法末尾调用
returnValue(self.machineList)

我曾尝试格式化您的代码,但它以前确实被破坏了。所以我不确定我是对的。请检查。可能重复的。你能把你的例子简化成一个简单的例子吗?很难获得您看到的确切输出。你对收益率的使用确实很奇怪。
yield
return
的组合看起来很可疑,从函数和yielding列表而不是单个项返回生成的值也是如此。虽然我知道您使用的py2没有
的收益率,但我希望循环收益率或的收益率。此问题的答案包含在您询问的关于此代码的其他类似问题中。我试图格式化你的代码,但它以前真的坏了。所以我不确定我是对的。请检查。可能重复的。你能把你的例子简化成一个简单的例子吗?很难获得您看到的确切输出。你对收益率的使用确实很奇怪。
yield
return
的组合看起来很可疑,从函数和yielding列表而不是单个项返回生成的值也是如此。虽然我知道您使用的py2没有的收益率,但我希望循环收益率或的收益率。此问题的答案包含在您询问的关于此代码的其他类似问题中。鉴于帕伦斯的自由打印,她正在使用python 2<代码>从产生的收益在3.3中引入。升级时间到了!我同意。Py2现在(终于)死在水里了。鉴于帕伦斯的自由打印,她使用的是python 2<代码>从产生的收益在3.3中引入。升级时间到了!我同意。Py 2现在死在水里了(终于)
@defer.inlineCallbacks
def getMachines(self):
    c = ldapconnector.LDAPClientCreator(reactor, ldapclient.LDAPClient)
    overrides = {self.basedn: (self.serverip, 389)}
    client = yield c.connect(self.basedn, overrides=overrides)
    yield client.bind(self.binddn, self.bindpw)
    o = ldapsyntax.LDAPEntry(client, self.basedn)
    results = yield o.search(filterText=self.query)
    for entry in results:
        for i in entry.get('name'):
            self.machineList.append(i)

    yield self.machineList
    print self.machineList
    return
@defer.inlineCallbacks 
def loadSettings(self):

    returned =  yield LdapClass().getMachines()  
    print returned