CCing the list.
Always use ReplyAll or ReplyList when responding to the list.

On 05/08/17 18:17, Xiaosong Chen wrote:
> 2) Also we avoid importing with the
>> from foo import *
>> even if you import with
>> import foo
>> foo.temp can still be accessed. When you use autocomplete in an
>> interactive shell like ipython, it might become an item.

foo.temp does not pose a problem of name pollution because you have
to prefix it with foo. Thus every module can have a temp variable and
there is no risk of names clashing because they all need to be
accessed with name.temp. You can even compare them:

if foo.temp < bar.temp....

> 3) We need fewer temporary variables because we can use
>> tuple unpacking and generator expressions to replace many
>> scenarios where C would use a temporary variable.
> I know little with python's xxx comprehension. In my memory, temporary
> variables seem not allowed inside, and the same for lambda
> expressions. Might you give some examples?
Things like list comprehensions often replace explicit loops which
would introduce extra named variables. Consider:

>>> lst = [n for n in range(7)]
>>> n
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined
>>> lst
[0, 1, 2, 3, 4, 5, 6]
>>> lst2 = []
>>> for n in range(7): lst2.append(n)
>>> n
>>> lst2
[0, 1, 2, 3, 4, 5, 6]

You can see how in the list comprehension case n
is not visible outside the comprehension whereas n
exists outside the for loop(as you noted in your original
post) so, by using the comprehension we reduce
the number of visible names.

Alan G
Author of the Learn to Program web site
Follow my photo-blog on Flickr at:

Tutor maillist  -
To unsubscribe or change subscription options:

Reply via email to