[IPython-dev] Re: Changes to Notebook Format
Fernando Perez
Fernando.Perez at colorado.edu
Wed Jul 27 01:44:40 EDT 2005
Robert Kern wrote:
> Tzanko Matev wrote:
>
>>Hi all,
>>
>>I found other problems with the current format. It is entirely possible
>>that a single input has several outputs, and prints to stdout and/or
>>stderr several times. Take for examlpe the following code.
>>
>>In [1]: if True:
>> ...: 1
>> ...: print 'foo'
>> ...: 2
>> ...: print 'bar'
>> ...:
>>Out[1]: 1
>>foo
>>Out[1]: 2
>>bar
>
>
> I've never run into a case where I actually want to see multiple
> Out[1]'s. It's usually in the middle of a for loop and I've forgotten
> that a function returns an object that I don't really need to see (e.g.
> pylab.plot()). Since only the last one actually goes into the output
> cache (that is, is accessible for later use via Out[1]), I'm not
> convinced that printing multiple Out[1]'s is useful. If I really want to
> see something in the middle of a loop, I'll print it.
Here's an even worse example:
In [3]: for i in range(3):
...: print 'passing...'
...: i
...:
passing...
Out[3]: 0
passing...
Out[3]: 1
passing...
Out[3]: 2
The multiple Out[] behavior is really mostly an implementation accident, not a
design feature. I'd be willing to consider it a bug, in the sense that naked
expressions in compound statements should not really be treated as return
valuues. I think the example above should simply print 'passing...' three
times, and NOT generate an Out[] cell at all.
> As for having stdout cells interleaved with other types of output cells,
> I think that's going to be pretty hard. You'd have to collect the output
> from each statement separately. I'm of the opinion that you should just
> collect one each of stdout and stderr.
Yup.
Cheers,
f
More information about the IPython-dev
mailing list