Python 未返回任何值

Python 未返回任何值,python,Python,以下代码用于函数中: def print_query(x): h = open('/home/rv/data.txt', 'r') read = h.readlines() for line in read: return line 当返回值“line”时,它应该打印出来,但我得到的是值“None”您没有检查“read”变量是否实际包含任何行-如果不包含,则函数将通过for循环返回None 使用for循环也很愚蠢——为什么要读取所有行,只返回第一行,尤其

以下代码用于函数中:

def print_query(x):
    h = open('/home/rv/data.txt', 'r')
    read = h.readlines()
    for line in read:
        return line

当返回值“line”时,它应该打印出来,但我得到的是值“None”

您没有检查“read”变量是否实际包含任何行-如果不包含,则函数将通过for循环返回None

使用for循环也很愚蠢——为什么要读取所有行,只返回第一行,尤其是在for循环中?当文件无法打开时会发生什么情况?

尝试以下操作:

with open('/home/rv/data.txt','r') as fh:
    for line in fh:
        print line
如果您使用的是Python2.5,您可能需要一个
from\uuuuuuuuuuuuuuuuuuuuuuuuuuuuu导入,并在顶部使用\u语句


另外:当你想打印它时,为什么你要
返回
行?

我不知道你为什么要为函数中的循环而烦恼,因为它无论如何都会在第一次迭代后返回。你到底想完成什么?除了简单的实现问题之外,这里似乎还有一个更深层次的概念性问题。

当您编写以下内容时:

def f:
  return 1
  return 2
函数返回1

如果要返回几个值,可以在列表中返回:

def f:
  ans = []
  ans.append(1)
  ans.append(2)
  return ans

另一种选择是使用“收益率”。当你准备好的时候用谷歌搜索它

该函数的另一个问题是,你在错误的对象上迭代,这比你需要的要详细得多。要迭代文件中的行,只需执行以下操作:

for line in open(file, "r"):
    print line

print\u查询实际上不打印任何内容。这是这段代码中最小的问题。您的return语句将被访问一次,这意味着“read”行列表中的第一行将被返回,其他行将丢失。我非常确定循环只执行一次,但对于获取文件的第一行来说,这仍然是一种奇怪的反模式。即将举行一场比赛,寻找比这更奇怪的方法。文件不是空的,啊,我不想重述我该如何复述所有的行?你想将行返回到调用代码还是只打印它们?如果要返回它们,只需返回h.readlines(),因为您的文件是empty@Liam,文件
/home/rv/data.txt
实际上是空的。确保使用的文件名正确。再次检查它是否包含某些内容。在我看来,似乎您已经使用了OP的实际意图并交付了sane Python代码来实现它。readlines()返回一个包含文件中所有行的列表。虽然它显然比需要的更详细(并且会占用更多的内存),但使用readlines显式获取要迭代的行列表并没有什么“错误”。readlines()和更高版本的xreadlines()在文件对象被Iterabley之前的旧时代经常被使用哦,我的错误。我将把这个留在这里,因为它仍然有些帮助。