python学习之路 第四天
1、函数动态参数:
#!/usr/bin/env python3
def show(*sss,**eee):
print(sss,type(sss))
print(eee,type(eee))
show(11,22,33,44,a = 88,b = 9,)
运行结果:(11, 22, 33, 44) <class 'tuple'>
{'a': 88, 'b': 9} <class 'dict'>
注:一个*表示元祖,2个*表示字典,一个*和2个*的参数同时存在,*sss和**eee位置不能换,一个*的必须在前面,参数上传也要按顺序。
2、lambda表达式,简单函数的表示方式。
3、chr(65) 'A' , ord('A') 65 ,random.randint(1,10) 生成1-10之间随机数字,可用于验证码。
4、filter 过滤作用。
5、map 对序列中每个元素进行操作。
6、json.loads() 字符串类似字典类型的转换为字典,字符串是双引号。
7、迭代器,__next__查询数据。
8、生成器 generator 一个函数调用返回一个迭代器,函数中包含yield语法。
9、#!/usr/bin/env python3
def cash_money(amount):
while amount > 0:
amount -=100
yield 100
print("又来取钱啦!")
atm = cash_money(500)
print(atm.__next__())
print(atm.__next__())
print(atm.__next__())
运行结果: 100
又来取钱啦!
100
又来取钱啦!
100
10、#!/usr/bin/env python3
import time
def consumer(name):
print("%s 准备吃包子啦!" %name)
while True:
baozi = yield
print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
def producer(name):
c = consumer('A')
c2 = consumer('B')
c.__next__()
c2.__next__()
print("老子开始准备做包子啦!")
for i in range(10): #做10次包子
time.sleep(1) #每次花费1秒钟
print("做了2个包子!")
c.send(i)
c2.send(i)
producer("zhangsan")
运行结果:A 准备吃包子啦!
B 准备吃包子啦!
老子开始准备做包子啦!
做了2个包子!
包子[0]来了,被[A]吃了!
包子[0]来了,被[B]吃了!
做了2个包子!
包子[1]来了,被[A]吃了!
包子[1]来了,被[B]吃了!
做了2个包子!
包子[2]来了,被[A]吃了!
包子[2]来了,被[B]吃了!
做了2个包子!
包子[3]来了,被[A]吃了!
包子[3]来了,被[B]吃了!
做了2个包子!
包子[4]来了,被[A]吃了!
包子[4]来了,被[B]吃了!
做了2个包子!
包子[5]来了,被[A]吃了!
包子[5]来了,被[B]吃了!
做了2个包子!
包子[6]来了,被[A]吃了!
包子[6]来了,被[B]吃了!
做了2个包子!
包子[7]来了,被[A]吃了!
包子[7]来了,被[B]吃了!
做了2个包子!
包子[8]来了,被[A]吃了!
包子[8]来了,被[B]吃了!
做了2个包子!
包子[9]来了,被[A]吃了!
包子[9]来了,被[B]吃了!