“返回”外部函数 - Python

时间:2014-02-03 18:49:52

标签: python function return

我遇到了这个功能的问题。 当我尝试运行代码时,在函数外弹出一条消息“return”。

感谢。

def find_details(id2find):
    surfistas_f = open("surfing_data.csv")
    for each_line in surfistas_f:
        s={}
        (s['id'], s['nome'],s['pais'],s['media'],s['prancha'],s['idade'])= each_line.split(";")
        if id2find == int(s['id']):
            surfistas_f.close()
            return(s)
surfistas_f.close()
return({})

lookup_id=int(input(" Entre com a identificação do surfista: "))
surfer = find_details(lookup_id)

if surfer:
    print("ID:           " + surfer['id'])
    print("Nome:         " + surfer['nome'])
    print("País:         " + surfer['pais'])
    print("Média:        " + surfer['media'])
    print("Prancha:      " + surfer['prancha'])
    print("Idade:        " + surfer['idade']) 

3 个答案:

答案 0 :(得分:3)

return({})不在函数find_details之内。你只需要缩进它,就像这样:

def find_details(id2find):
    surfistas_f = open("surfing_data.csv")
    for each_line in surfistas_f:
        s={}
        (s['id'], s['nome'],s['pais'],s['media'],s['prancha'],s['idade'])= each_line.split(";")
        if id2find == int(s['id']):
            surfistas_f.close()
            return(s)
    surfistas_f.close()
    return({})

lookup_id=int(input(" Entre com a identificação do surfista: "))
surfer = find_details(lookup_id)

if surfer:
    print("ID:           " + surfer['id'])
    print("Nome:         " + surfer['nome'])
    print("País:         " + surfer['pais'])
    print("Média:        " + surfer['media'])
    print("Prancha:      " + surfer['prancha'])
    print("Idade:        " + surfer['idade']) 

答案 1 :(得分:2)

在Python中,空格和缩进非常重要。 Python不像其他语言那样使用大括号,因此它识别哪些行是缩进的一部分。例如,这个简单的函数:

def print_nums(num):
    for i in range(num):
        print(i)
如果Python使用大括号(我在思考时不寒而栗),

可以这样思考:

def print_nums(num): 
{
    for i in range(num): 
    {
        print(i)
    }
}

如果我们将其更改为:

,此方法的结果将发生巨大变化
def print_nums(num):
        for i in range(num):
        print(i)

如大括号所示:

def print_nums(num): 
{
        for i in range(num):
        {
        }
        print(i)
}

因此,确保所有内容都正确缩进在Python中非常重要。因此,特别是对于您的方法,return将缩进到与方法名称相同的级别,这意味着Python解释器会将其视为在方法之外。您无法在方法/函数之外使用关键字return,这就是您看到错误的原因。但是,如果你使用print()或者最后使用其他东西,你会看到一些意想不到的结果。

我还建议使用Python的with语句来打开文件,它会为你处理关闭和打开文件:

with open('surfing_data.csv') as sufista_s:
    do_stuff()

答案 2 :(得分:1)

请注意代码格式。 在这两行之前你需要4个额外的空间:

surfistas_f.close()
return({})