学习 Python day4

本文深入探讨Python的高级特性,包括yield生成器的使用,如何创建不定长参数函数,以及装饰器的实战应用。同时,通过具体实例讲解了多进程库multiprocessing的应用,演示了如何并行执行任务,提升程序效率。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值