87
val = ""

del val

if val is None:
    print("null")

I ran above code, but got NameError: name 'val' is not defined.

How to decide whether a variable is null, and avoid NameError?

Zephyr Guo
  • 1,083
  • 1
  • 8
  • 14
  • 1
    You could use a `try : except` block to check if the error is being thrown – Ludisposed May 12 '17 at 09:37
  • 5
    That's not a "null" variable - the variable **doesn't exist**... there's a distinct difference between something not existing and existing with a "null" value (in Python that's normally the `None` singleton) – Jon Clements May 12 '17 at 09:38

3 Answers3

130

Testing for name pointing to None and name existing are two semantically different operations.

To check if val is None:

if val is None:
    pass  # val exists and is None

To check if name exists:

try:
    val
except NameError:
    pass  # val does not exist at all
Łukasz Rogalski
  • 22,092
  • 8
  • 59
  • 93
12
try:
    if val is None: # The variable
        print('It is None')
except NameError:
    print ("This variable is not defined")
else:
    print ("It is defined and has a value")
Ludisposed
  • 1,709
  • 4
  • 18
  • 38
5

You can do this in a try and catch block:

try:
    if val is None:
        print("null")
except NameError:
    # throw an exception or do something else
cezar
  • 11,616
  • 6
  • 48
  • 84