-
慕的地6264312
使用装饰器或闭包def my_yeehaw(result): def yeehaw(): if some_bool: return 'yeehaw' return result return yeehawa = my_yeehaw('a')b = my_yeehaw('b')
-
胡说叔叔
您可以使用接受 a 的 lambda。bool以及条件为假时返回的默认值:check = lambda condition, default: 'yeehaw' if condition else defaultdef a(): return check(condition, 'a')def b(): return check(condition, 'b')
-
海绵宝宝撒
我是 python 的新手,但我认为您可以使用默认参数根据传递给函数的内容发送 a 或 b。def a(x='a'): if condition: #where condition can be True or False return 'yeehaw' return x
-
慕斯王
(注意:我的命名不是最好的,考虑到same_bool可以更好地调用该函数identical_if_block(...)以遵循您的示例而且我还假设 bool_ 是一个参数,尽管它可以作为全局参数使用。但不像bool任何函数对象那样,总是真实的>>> bool(bool)True)使用一个函数,只要它不需要返回 falsies。def same_bool(bool_): " works for any result except a Falsy" return "yeehaw" if bool_ else Nonedef a(bool_): res = same_bool(bool_) if res: return res return 'a'def b(bool_, same_bool_func): #you can pass in your boolean chunk function res = same_bool_func(bool_) if res: return res return 'b'print ("a(True):", a(True))print ("a(False):", a(False))print ("b(True, same_bool):", b(True,same_bool))print ("b(False, same_bool):", b(False,same_bool))输出:a(True): yeehawa(False): ab(True, same_bool): yeehawb(False, same_bool): b如果确实需要伪造,请使用特殊的保护值 def same_bool(bool_): " works for any result" return False if bool_ else NotImplemented def a(bool_): res = same_bool(bool_) if res is not NotImplemented: return res return 'a'您也可以输入"a","b"因为它们是恒定的结果,但我认为这只是在您的简化示例中。 def same_bool(bool_, val): return "yeehaw" if bool_ else val def a(bool_): return same_bool(bool_, "a")
-
慕森王
我最终喜欢上了装饰器语法,因为包含重复条件逻辑的函数还有很多其他功能:# `function` is the decorated function# `args` & `kwargs` are the inputs to `function`def yeehaw(function): def decorated(*args, **kwargs): if args[0] == 7: return 99 # boolean check return function(*args, **kwargs) return decorated @yeehawdef shark(x): return str(x)shark(7)