没有返回任何值

时间:2010-07-01 19:03:39

标签: python

以下代码用于函数:

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

当重新调整值“line”时,它应该打印,但我得到值“None”

5 个答案:

答案 0 :(得分:8)

试试这个:

with open('/home/rv/data.txt','r') as fh:
    for line in fh:
        print line

如果您使用的是Python 2.5,则可能需要from __future__ import with_statement

另外:为什么return为什么要print呢?

答案 1 :(得分:2)

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

使用for循环也很愚蠢 - 为什么你会读取所有行,并且只返回第一行,特别是在for循环中?无法打开文件时会发生什么?

答案 2 :(得分:1)

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

答案 3 :(得分:0)

当你写作时:

def f:
  return 1
  return 2

该函数返回1.

如果你想返回几个值,你可以在列表中返回它:

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

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

答案 4 :(得分:0)

该函数的另一个问题是你正在迭代错误的对象比你需要的更冗长。要迭代文件中的行,只需执行以下操作:

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