如果您喜欢做一些过度的事情来完成简单的任务(赋值表达式/海象运算符),请定义一个装饰器来为您处理返回值:allowed_list = ['foo', ]def check_return_value(fn): def inner(*args, **kwargs): result = fn(*args, **kwargs) return result if result in allowed_list else 'default' return inner# suppose this name is imported from somewhere else and you can't use @ syntaxdef some_func(): return 'boo'some_func = check_return_value(some_func)var = some_func()print(var) # prints "default"
只要您仅限于 Python 3.6 并且不能使用赋值表达式,您就可以为自己创建一个辅助函数来处理这个问题。def some_func(): return 'foo'def default_if_invalid(value, allowed_values, default): return value if value in allowed_values else defaultallowed_list = ['foo', 'bar']value = default_if_invalid(some_func(), allowed_list, 'default')None如果您始终检查相同的允许值列表,或者如果您希望该方法在未提供默认值的情况下提供默认值(也许),则可以轻松修改此值。例如:def default_if_invalid(value, default=None): allowed_list = ['foo', 'bar'] return value if value in allowed_values else defaultvalue = default_if_invalid(some_func()) # sets to None if not in listvalue = default_if_invalid(some_func(), 'default') # specifies a default