mapping.get() supports a 'default' argument:
os.environ.get("CDO_TBLPATH", '')
The default is to return None, but by specifying an empty string your concatenation will work even if CDO_TBLPATH is not defined.
You cannot have the concatenation magically return None if the .get() return None; you could use a custom class that returns None in a __add__ method but I'm not sure if that'd be very readable.
If you need to skip any of the options (not concatenate) if the environment variable is not defined, you'd be better off splitting out the tests:
table_options = (
(lambda: iTBLFilePath, lambda: iTBLFilePath)
(lambda: os.environ.get("CDO_TBLPATH") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_TBLPATH"] + os.environ["CDO_INSTANCE_TYPE"] + '.tbl'),
(lambda: os.environ.get("CDO_ROOT") and os.environ.get("CDO_INSTANCE_TYPE"),
lambda: os.environ["CDO_ROOT"] + "/cdo/tbl/" + os.environ["CDO_INSTANCE_TYPE"] + ".tbl"),
(lambda: True, lambda: None),
)
self. _TBLFilePath = next(opt() for tst, opt in table_options if tst())
This defines a series of tests, and the value associated with the first test that is successful is used.