Haven’t written python code for more than one year, I met this simple problem:
import zkpython
....
res = zookeeper.get_children(handle, path, zk_watcher)
a = len(res)
b = res[0]
print a, b
if a >= b:
print "OK"
Even the code have print out the value of “a” and “b” as 2 and 1, the condition check “if a >= b:” is false!
Spending more than 10 minutes, I eventually get the reason: the type of “a” is “int” but “b” is “string” (and the interpreter of Python will not report any warning about this “inconsistency”). I should have been taking enough care of the type of these variables.
Seems “print” can’t reveal adequate details of a variable, therefore it is highly suggested we using “pprint” instead of “print”.
import pprint
...
pprint.pprint(a)
pprint.pprint(b)
The result will be
2 '1'