yield
def A():
for i in range(5):
yield i
#尝试执行try中的代码,如果有错,则被excpt捕获,但是整个函数不会崩溃
try:
a = A()
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))
except Exception as e:
print(e)
print('Hello world')
不定长参数
#*arge 相当于位置传参
def haha(*args):
print(args)
haha(1,2,3,4)
kwarge 相当于带参数名称的传参
def haha(**kwargs):
print(kwargs)
haha(a=1,b=2,c=2)
aegs一定要放在前面
def hehe(*arge,**kwarge):
print(arge)
print(kwarge)
hehe(1,2,3,a=1,b=2,c=3)
练习
def deco(func):
def warp(*args,**kwargs):
print(args)
print(kwargs)
return func(*args,**kwargs)
return warp
@deco
def aaa(name):
print(name)
aaa(name="haha")
def deco2(param):
print(param)
================================
def deco(func):
def warp(*args,**kwargs):
print(args)
print(kwargs)
kwargs['name2'] = 10000
return func(*args,**kwargs)
return warp
return deco
@deco2(1000)
def aaa(name2):
print(name2)
aaa(name2="haha")
练习2
def deco(func):
def warp(*args,**kwargs):
num = kwargs['num']
if num > 4:
print('404')
else:
return func(*args,**kwargs)
return warp
@deco
def Page_1(num):
print('页面详情')
if __name__=='__main__':
for i in range(10):
Page_1(num=i)
多进程
# 多进程的库
from multiprocessing import Process
from random import randint
from time import time, sleep
import os
def download_task(filename):
print('开始下载%s' % filename)
time_to_download = randint(5, 10)
sleep(time_to_download)
print('%s 下载完成,经过%d秒' % (filename, time_to_download))
def main():
start = time()
# 开启两个多进程, 函数名 传递的参数,需要注意的是,它接受的是一个元组(tuple)
p1 = Process(target=download_task, args=('论朱慧何时生孩子.mp4', ))
p2 = Process(target=download_task, args=('论计欣茹何时变瘦.mp5', ))
# 获取进程号
# 启动进程
p1.start()
p2.start()
##############
# 进程阻塞.
p1.join()
p2.join()
##############
end = time()
print(end - start)
if __name__ == '__main__':
main()
import requests