函数Python外部的“return”

2024-04-28 17:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我对这个函数有问题。 当我尝试运行代码时,在函数外部弹出一条消息“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']) 

Tags: 函数idreturnlinefinddetailsmediaeach
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']) 

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

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

如果Python使用了大括号,可以这样认为(一想到这个我就不寒而栗):

^{pr2}$

如果将此方法更改为:

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

如括号所示:

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

因此,在Python中,确保所有内容都正确缩进是非常重要的。因此,特别是对于您的方法,返回值将缩进到与方法名相同的级别,这意味着Python解释器会认为它在方法之外。您不能在方法/函数之外使用关键字return,因此您看到了所看到的错误。但是,如果在结尾使用print()或其他方法,您会看到一些意想不到的结果。在

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

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

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

surfistas_f.close()
return({})

相关问题 更多 >