我正在寻找一个捷径:
name = ''
if myobj not None and myobj.name not None:
name = myobj.name
date = ''
if myobj not None and myobj.date not None:
date = myobj.date
logging.info('Something happened with %s at %s', name, date)
就像是:
logging.info('Something happened with %s at %s', none_as_empty_str(myobj.name), none_as_empty_str(myobj.date))
任何的想法?谢谢!
如果你想要一些相对较短的东西,你可以使用:
myobj and myobj.name or ''
如果myobj
或myobj.name
是None(或其他假的),这将产生''
。
否则它将产生myobj.name
。
或者,只要您将属性推迟到函数内部或间接访问它,您的none_as_empty_str
函数就是可行的。这样,如果myobj
为None,则可以获取空字符串而不是异常:
def none_as_empty_str(obj, attr):
return getattr(obj, attr, None) or ''
logging.info('Something happened with %s at %s',
none_as_empty_str(myobj, 'name'),
none_as_empty_str(myobj, 'date'))