I started trying to teach myself how to program in python just a few days ago. I have been using a wikibook for non programmers and it has this piece of code as an example. I CAN NOT for the life of me figure out why it outputs the value of the variable a_var from inside the function as being 15 or == to b_var when i change it. I have tried reading over the code multiple times and messing around with the elements of the code to see if i can make it apparent to no avail. I would love it if someone could help clarify this for me.

a_var = 10
b_var = 15
e_var = 25
 
def a_func(a_var):
    print "in a_func a_var = ", a_var
    b_var = 100 + a_var
    d_var = 2 * a_var
    print "in a_func b_var = ", b_var
    print "in a_func d_var = ", d_var
    print "in a_func e_var = ", e_var
    return b_var + 10
 
c_var = a_func(b_var)
 
print "a_var = ", a_var
print "b_var = ", b_var
print "c_var = ", c_var
print "d_var = ", d_var

Edit: i do know that this code does not work correctly and it's a little dumb but i got it from an e-book and it is an example. obviously i take no responsibility or credit for it :P

it is equal to 15 because you are passing b_var to the function

c_var = a_func(b_var)
you are getting mixed up between the a_var in the function and the other a_var

i was actually just starting to ask where it was called when i realized that this code

def a_func(a_var):
    print "in a_func a_var = ", a_var
    b_var = 100 + a_var
    d_var = 2 * a_var
    print "in a_func b_var = ", b_var
    print "in a_func d_var = ", d_var
    print "in a_func e_var = ", e_var
    return b_var + 10

didn't actually run until it was called below itself in the program :o
thanks for the help xoxox

If you want to know what local variables the function has, you can show the local dictionary of the function using vars() ...

def funk1(a):
    c = 7
    print vars()  

a = 1
b = 2
c = 3

funk1(b)  # {'a': 2, 'c': 7}
This question has already been answered. Start a new discussion instead.