Home

On Sun, 16 Sep 2007 00:40:13 +0000, Steven D'Aprano wrote:

> On Sun, 16 Sep 2007 00:05:58 +0000, Marc 'BlackJack' Rintsch wrote:
>
> In *general* the compiler can't tell, but in specific cases it could. A
> (hypothetical) optimizing compiler would tell the difference between:
>
>
> for item in alist[1:5]:
> print item # no possible side-effects

To expand on what Ben said: After conversion to `str` the result is then
given to `sys.stdout.write()` and of course `sys.stdout` could be another
object that changes `alist`.

> for item in alist[1:5]:
> alist.append(item) # side-effects DON'T matter

Side effect do matter here, even in not so pathological cases. There are
cases where you get a different result whether you copy or not even with
plain vanilla `list`\s:

In [153]: alist = [1, 2, 3]

In [154]: for item in alist[1:5]:
.....: alist.append(item)
.....:

In [155]: alist
Out[155]: [1, 2, 3, 2, 3]

In [156]: alist = [1, 2, 3]

In [157]: for item in islice(alist, 1, 5):
.....: alist.append(item)
.....:

In [158]: alist
Out[158]: [1, 2, 3, 2, 3, 2, 3]

Ciao,
Marc 'BlackJack' Rintsch

previous
next

draggable Tkinter.Text widget
Re: getting values in a map - map wrapper class
Re: inline constructor and destructor
Re: strings/char problem :(
Re: Creating a new ***Welcome Message***
Nasze Dzieci
Fundacja Avalon
Rodzic Po Ludzku
Fundacja Iskierka
Mimo Wszystko