pythonman11
pythonman11

Reputation: 1

Returning variable outside function

Why is x not defined outside the function? Is return x placed wrong?

def find(): 

x else:

find()

Upvotes: 0

Views: 3732

Answers (2)

bgusach
bgusach

Reputation: 15205

Your function never returns anything. Check this, with some added error handling for no end of metadata detection

def find(): 
    data=file('file.dat')
    x=0
    for line in data:
        if 'metaend' in line:
            return x

        x += 1
    raise Exception('heeey no end of metadata')

By the way, python has a very nice function for a counter in a loop:

def find(): 
    data=file('file.dat')

    for counter, line in enumerate(data):
        if 'metaend' in line:
            return counter

    raise Exception('heeey no end of metadata')

Upvotes: 2

Barmar
Barmar

Reputation: 782407

Put return x outside the loop:

def find(): 
    data=file('file.dat')
    x=0
    for line in data:
        if 'metaend' in line:
            break
        else:
            x+=1
    return x

To get the value of x, you use the return value of the function:

count = find()

Upvotes: 6

Related Questions