How can I tell if variable is defined
Dave Angel
davea at ieee.org
Tue Sep 22 19:58:57 EDT 2009
Mel wrote:
> <snip>
>> This is an artifact of the interactive interpreter,
>>
>
> True. You can avoid the artifact by wrapping the test in a function:
>
> Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
> [GCC 4.3.3] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>
>>>> class A():
>>>>
> ... def __repr__ (self):
> ... return b
> ...
>
>>>> def is_defined (obj):
>>>>
> ... try:
> ... obj
> ... except NameError:
> ... return False
> ... return True
> ...
>
>>>> a = A()
>>>> if is_defined (a):
>>>>
> ... print "`a` is defined"
> ... else:
> ... print "`a` is not defined"
> ...
> `a` is defined
>
>>>> if is_defined (b):
>>>>
> ... print "`b` is defined"
> ... else:
> ... print "`b` is not defined"
> ...
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> NameError: name 'b' is not defined
>
>
> At the cost of it not quite working when the function is called with an
> undefined name. I suppose the print statements could be crafted to make it
> look better.
>
>
> Mel.
>
>
No clue what you're trying to accomplish here. The exception inside the
function is_defined() will never fire; the method always returns True.
You're getting an exception during the attempt to call such a function,
and so of course there's no point in putting the if test around that either.
This may be the last time I try to read such complexity in an
interactive transcript. It took a couple of tries before I got the
indentation understood. I thought that is_defined() was intended to be
a method inside the class.
DaveA
More information about the Python-list
mailing list