show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解了字典作为参数
- 字典作为形参(args)被定义
- 如果实参传过来是多个元素
- 形式是关键字型
- 用逗号隔开
- 函数中可以用对kwargs解包
- kwargs是一个字典
- 这样我们就可以在调用的时候使用不定长的字典参数了
- 这也很方便
- 如果实参传过来是多个元素
- 字典作为实参被调用的时候
- 如果真的是一个字典变量
- 前面要加上**
- 变成**kwargs
- 可以把字典项作为参数一个个传过去
- 如果真的是一个字典变量
- 函数还有什么好玩的?
- 小型匿名函数可以用lambda这个关键字来
- 一般的函数定义
- lambda函数定义
- 这种函数可以直接写在参数位置
- 这样我们就有了一个lambda 关键字定义的匿名函数
- 如何从汇编角度理解这个?
- :python3 -m dis %
- 还是定义了一个函数
- 还是调用(call)了这个函数
- 只不过这个函数没有名字
- 而是叫做lambda
- 如何理解lambda呢?
- 查询
- lambda表达式经常用来产生匿名函数
- 用法和函数一样
- 有什么好用的么?
- 这个列表是由元组组成的
- 可以按照元组中的第0项排序
- 第0项是数字
- 按照数字的大小排序
- 也可以按照第1项
- 第1项是字符串
- 按照字符串中字母的ascii编码排序
- 默认是第几项呢?
- 默认第0项
- 可以把匿名函数变成非匿名的么?
- 可以定义成具体的函数
- 不过匿名函数(lambda)好写好用
- 具体应用
- 一副扑克
- 54张
- 想玩斗地主
- 用计算机模拟出洗牌、理牌的过程
from random import shuffle
def get_ordinal(l):
return l[0]
def show():
for group in groups:
for card in group:
print(card[1],end=" ")
print()
print()
red = "\33[30;47m"
black = "\33[31;47m"
reset = "\33[0m"
nums = ["2","3","4","5","6","7","8","9","X","J","Q","K","A"]
marks = [black + "\u2660",red + "\u2665",black + "\u2663",red + "\u2666"]
cards = []
current = 0
for num in nums:
for mark in marks:
cards.append((current,mark+num+reset))
current = current + 1
cards.append((53,black+"JK"+reset))
cards.append((54,red+"JK"+reset))
shuffle(cards)
user1 = cards[0:17]
user2 = cards[17:34]
user3 = cards[34:51]
dizhu = cards[51:54]
groups = [user1,user2,user3,dizhu]
show()
for group in groups:
group.sort(key=get_ordinal)
show()
- 可以优化么?
- 如何优化
- 我们这次研究了匿名函数(lambda)
- 匿名函数也是一个函数
- 也需要被调用(call)
- 但是匿名函数用lambda表达式的方式写成
- 简便易用
- 清晰明确
- 可以用于排序等等方面
- 函数到这里已经很久了
- 是时候进行总结了🤔
- 下次再说👋