选择最佳策略:简单的方式和globals()

promos = [fidelity_promo, bulk_item_promo, large_order_promo] ➊
def best_promo(order): ➋
    """选择可用的最佳折扣
    """
    return max(promo(order) for promo in promos) ➌
 
globals()
 
返回一个字典,表示当前的全局符号表。这个符号表始终针对当前 模块(对函数或方法来说,是指定义它们的模块,而不是调用它们的模 块)。
promos = [globals()[name] for name in globals() ➊
                if name.endswith('_promo') ➋
                and name != 'best_promo'] ➌
def best_promo(order):
    """选择可用的最佳折扣
    """
    return max(promo(order) for promo in promos) ➍        
❶ 迭代 globals() 返回字典中的各个 name。
❷ 只选择以 _promo 结尾的名称。
❸ 过滤掉 best_promo 自身,防止无限递归。
❹ best_promo 内部的代码没有变化。
 
posted @ 2019-10-10 18:32  顽强的allin  阅读(130)  评论(0编辑  收藏  举报