Νίκος writes: > How can i wrote the two following lines so for NOT to throw out > KeyErrors when a key is missing? > > city = gi.time_zone_by_addr( os.environ['HTTP_CF_CONNECTING_IP'] ) or ... > I was under the impression that the 'or' operator was handling this > in case one operand was failing but its not the case here.
"f(x) or g(x)" raises an exception if "f(x)" raises an exception, or if "f(x)" returns a false value and "g(x)" raises an exception. > Then i thought of os.environ.get() to default to something but then > again we have 3 operand in the expression. Adapt this: >>> {}.get('foo') or {'empty':''}.get('empty') or 'catchall' 'catchall' Or nest the calls this way if an empty string is a valid value: >>> {}.get('foo', {'empty':''}.get('empty', 'catchall')) '' This will compute the default values even when they are not used. -- https://mail.python.org/mailman/listinfo/python-list