[Edu-sig] RE: Edu-sig digest, Vol 1 #651 - 10 msgs

John Posner (AccuRev) j.posner@accurev.com
Sun, 16 Feb 2003 14:00:54 -0500


This is a multi-part message in MIME format.

------=_NextPart_000_0002_01C2D5C3.D2F38970
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

 ## =20
 ##  Seems to me the only thing to do is to show a few alternate=20
 ##  cases, such as assigning a function result to a variable:
 ## =20
 ##  >>> def pfunc():
 ##  ...     print 'a'
 ##  ...=20
 ##  >>> def rfunc():
 ##  ...     return 'a'
 ##  ...=20
 ##  >>> pfunc()
 ##  a
 ##  >>> a =3D pfunc()
 ##  a

I think it's vitally important for programming students to learn the
difference between a function's RETURN VALUE and such "side-effects" as
OUTPUT (to stdout, to a file, etc.) To my mind, it would be =
pedagogically
superior to clearly identify a returned value that is sent to the =
console:

   >>> def rfunc():
            print 12.5

   >>> rfunc()
   return value: 12.5

(Only a Python-aware console -- e.g. IDLE, not a DOS window -- could do
this.) Compare this with the current behavior of Python IDEs (all of =
them?):

>>> rfunc()
12.5

In this example, the return value is numeric. So the programming student
isn't given any visual clue as to the difference between a RETURN VALUE =
and
OUTPUT to stdout. (If the return value were a string, as in Terry =
Hancock's
example, the student would see a value enclosed in quotes. This is a =
clue,
but one that's easy to miss and doesn't apply to all data types.)

One way to implement this (does it already exist?) would be to have the
Python IDE support a user-settable "return value prefix". Whenever a =
value
is returned to the top level, the prefix (such as "return value: " in my
example above) would be displayed by the IDE before the value itself.

I'd also put in a toggle switch to enable/suppress display of:

  return value: None

... which some students might tire of before too long.


Mini-flame: Terry, I think there's a bit of perversity in your example:

(1)   >>> def pfunc():
(2)           print 'a'
(3)
(4)   >>> a =3D pfunc()
(5)   a

In line 4, you chose to name the assigned-to variable "a", because the
variable is (erroneously) expected to get the value "a". This is a neat
shorthand for experienced programmers, but it's the kind of thing that
confuses students. Distinguishing between names of variables and the =
values
that get assigned to variables is just as important as distinguishing
between functions' return values and their side-effect output.

-John

--
John Posner =D4=BF=D4=AC
102 Taylor Ave.
Madison, CT  06443
jjposner@snet.net
203-245-2051

------=_NextPart_000_0002_01C2D5C3.D2F38970
Content-Type: application/ms-tnef;
	name="winmail.dat"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="winmail.dat"

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
QkxFOgAAAAD0Sg==

------=_NextPart_000_0002_01C2D5C3.D2F38970--