variables exist

Brian van den Broek bvande at po-box.mcgill.ca
Mon Apr 11 12:31:09 EDT 2005


Fredrik Lundh said unto the world upon 2005-04-11 10:14:
> "fabian" wrote:
> 
>>how testing if a variable exists in python as isset in php??
> 
> 
> try:
>     variable
> except NameError:
>     print "variable not set"
> 
> but that is really lousy Python; better make sure you always assign to
> all variables, and use None (or another suitable value) to mark that some
> variable has no meaningful content right now.
> 
> that is, instead of

<SNIP full try/except example>

> write
> 
>     variable = None
> 
>     if condition:
>         variable = 1
> 
>     ...
> 
>     if variable is None:
>         print "variable not set"
> 
> </F> 


Hi Fredrik and all,

I'm a hobbyist and still learning, but the claim the try/except is
"lousy Python" surprise me a bit. The try/except way seems like an
instance of "Easier to ask Forgiveness than Permission", and my sense
is that in 95% of cases that approach is widely considered more 
Pythonic than LBYL (of which the suggested idiom seems reminiscent).

As it happens, most of my code does preset names to None, but reading
this thread made me wonder. Are you suggesting setting to None is
better as it makes explicit that there is nothing there, but this may
change in the future? (This is why I do it.) Or for some other reason?

I have no partisan interests either way; I'm just trying to 
understand. Thanks and best,

Brian vdB





More information about the Python-list mailing list