Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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_Function_Return - Fatal编程技术网

Python错误:函数外部的“return”

Python错误:函数外部的“return”,python,function,return,Python,Function,Return,我在使用python时遇到了一个问题,我无法理解为什么会发生这种情况 我的代码如下: def getServers(baseDN=''): from pyad import adquery q = adquery.ADQuery() q.execute_query( attributes=["distinguishedName", "description"], \ where_clause="objectClass = 'Computer

我在使用python时遇到了一个问题,我无法理解为什么会发生这种情况

我的代码如下:

def getServers(baseDN=''):
    from pyad import adquery
    q = adquery.ADQuery()
    q.execute_query(
        attributes=["distinguishedName", "description"], \
        where_clause="objectClass = 'Computer'", \
        base_dn=baseDN)
    #Lo que devuelve es un generator campeon :) Podes pasarlos con next o con un for.
    return [server['distinguishedName'].split(',')[0].strip('CN=') for server in q.get_results()] # Y aca lo parseo con un for
因此,基本上,如果我通过执行py文件来执行这段代码,它将非常有效。但是,如果我尝试在控制台上使用它,我会得到一个返回函数外部错误,我无法找到解决方法,因为我试图通过在控制台上运行片段来调试代码:


感谢您的帮助:

解析器认为函数在返回语句之前就结束了,这意味着缩进可能存在某种问题。确保每行前面有相同数量的空格/制表符,或者确保没有混合空格和制表符、某些行上的空格和其他行上的制表符。这也可能有助于去掉注释行


编辑:删除注释修复了您的问题,这表明您使用的控制台有缺陷,因为语法正确。

问题在于返回之前的注释。由于某种原因,控制台不能很好地理解续集。因为我只是对测试代码感兴趣,所以我只是删除了注释。

您没有在控制台中正确缩进代码,因此文本不在函数范围内。当你回来的时候,这就成了一个问题。。。因为return必须在函数范围内。顺便说一句,这里不需要换行符,python会忽略括号内的换行符。请尝试删除注释Lo que devueve es u。。。我同意这可能是一个简单的缩进问题,但很可能不是,请在输入代码并获得错误后提供控制台的屏幕截图。嗨,伙计们。Milind,问题是注释,我只是将注释移到函数之外,现在它运行良好:我没有否决投票,但在我们获得更多信息之前,这似乎是猜测。嗨,bebop,不知怎的,是因为缩进,但不是直接缩进,因为行正确缩进,但由于某种原因,控制台不理解缩进,我通过将注释移到函数外解决了它,至少在控制台上测试时是这样。@Kevin我仍在学习python,但这似乎足够简单。除了我提出的两点之外,你能想到其他可能导致这个错误的东西吗?我自己的理论是:1 OP在控制台中写的东西与他在这里写的东西不同,在这种情况下,问题应该以打字错误的形式结束,而不是被回答;或2 OP使用非标准控制台或REPL,该控制台或REPL编程不当,因此在提供完全正确的代码时表现不正确。虽然在这种情况下,删除注释行确实有助于OP,但它并没有真正触及问题的根源,因为函数中的注释应该可以在控制台上正常工作。如果未来的用户遇到同样的问题,并最终出现在这里,他们将得出的结论是永远不会在函数中使用注释,而不会切换到一个有效的REPL或任何真正的问题,这对我来说似乎是一个耻辱。你在使用哪个控制台?假设所有缩进都正确,它应该能够正确处理注释。注释的语法似乎没有任何问题。嗨,Bebop,检查其他答案上的注释,因为注释正在重复。