Python-100-Days
Python-100-Days copied to clipboard
Day9 扑克牌游戏 player.arrange(get_key) 这句话的执行过程是怎样的,有点儿看不懂了。在一个player的循环里,get_key被调用了13次,而arrange被调用了1次。为什么get_key会被调用13次呢
我猜测应该是跟list.sort内部实现方法有关吧,虽然我也不太明白其中原理,但是你看下这个大概就知道怎么回事了 l = ['b', 'a', 'g', 'c', 'd'] def func(data): print(data) return data[0] l.sort(key=func) # 这个和l.sort()输出结果是一样的
看输出他是从list里面一个一个取元素的 因为每个player里面有13个元素,所以arrange每调用一次get_key会被调用13次
我的理解是: get_key是获取一张扑克牌的suite和face,每个玩家有13张牌, 所以会执行13次获取所有的牌形成一个list。最后arrange()一次性对这个列表排序。
player.arrange(get_key) 中调用的是 self._cards_on_han_cardsd.sort(key=card_key) 在这里使用了 sort 方法对每个玩家手中的牌进行排序,显而易见每个玩家手牌数量为13张 get_key 作为 sort 方法的形参调用,return 的两个参数 return card.suite, card.face 会对 _cards_on_han_cardsd 中每一张手牌进行排序,即会执行13次 get_key