----- Message from [EMAIL PROTECTED] ---------
    Date: Sun, 24 Aug 2008 01:31:28 -0500
    From: Alberto Perez <[EMAIL PROTECTED]>
Reply-To: Alberto Perez <[EMAIL PROTECTED]>
 Subject: [Tutor] hi...
      To: tutor@python.org


run a program in interactive mode, the program run very good, but if run in not interactive mode not show me error, but the return of function returns no value, this is the source code:

def suma(no1,no2):       total=no1+no2
   return total
print 'hola'
opcion=input()
if opcion==1:
   print 'suma'
   a=input()     b=input()>
   suma(a,b)

the result of this code is:

hola
1
suma
5
7
total
Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> totalNameError: name 'total' is not defined>>>

why this happens??? what I did wrong??? and why run very good in


Hi,

Welcome to python and the tutor list.

An earlier response pointed out that you need to bind the returned value to total as in
total = suma(a, b)
but I thought a bit of explanation might help. In your function, you define total. That makes `total' a name in the scope of the function. That means that `total' can be seen by code in your function, but not code outside of your function.

This might seem confusing now, but in the long run, it makes life easier. How? Well, you can define all sorts of names in the body of your functions without having them clutter up the name-space of your overall code. That makes things cleaner. It also makes them less error prone. If total defined in your function was visible everywhere by default, then you would have to make sure that your function didn't define any names that higher level code did. (You'd have to make sure that total defined in a function didn't overwrite total defined outside of the function.)

You can make names defined in functions be globally available, but until you've got some experience, don't do that. (Arguably, once you have experience, don't do that then either ;-)

Hope that helps some,

Brian vdB
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to