generator expression works in shell, NameError in script

Emile van Sebille emile at fenx.com
Wed Jun 17 19:13:03 EDT 2009


On 6/17/2009 3:54 PM ssc said...
> Wow! Didn't expect that kind of instant support. Thank you very much,
> I'll give both zip and enumerate a try.
> 
> The code I've shown is actually copied pretty straight from a Django
> form class, but I didn't want to mention that as not to dilute the
> conversation. Don't think it matters, anyway. This is the relevant
> excerpt:
> 
> from django.forms import Form
> 
> class SignupForm(Form):
> 
>     titles = ['Dr', 'Miss', 'Mr', 'Mrs', 'Ms',]
>     title_choices   = [(0, '')] + list((titles.index(t)+1, t) for t in
> titles)
> 
> Now that I look at it again, it seems odd to me to not have the code
> e.g. in __init__(...), but just 'class-global'.

And as class is an executable statement, I imagine titles exists in a 
namespace that hasn't yet been completely defined.

> Still, that does not seem a reason for titles not to be not defined,
> as I do define it just in the line above.

Well, again, titles will exists in the SignupForm namespace once it 
exists, which it doesn't yet when you get to title_choices and want to 
access it.  Define titles above the class and you should be OK.

> 
> Does the generator expression have its own little namespace or so ?

Sometimes -- in some python versions generator expressions leak...

Emile





More information about the Python-list mailing list