python基础学习(一)

闭包函数:

1.定义在函数内部的函数

2.包含对外部作用域名字的引用,而不是对全局作用域名字的引用(重点是理解这句话)

例如: x=1

           def f1():

                x=11111111111

               def f2():

                    print(x)

               return f2

此时的函数f2()就是一个闭包函数


闭包函数的应用(爬网页):

import requests

def index(url):

def get():

    return requests.get(url).text

return get

python_web=index('https://www.python.org')

baidu_web=index('https://www.baidu.com')

上面为闭包函数爬不同的网页,当我们要爬这两个网页的数据的时候,直接调用python_web()或者baidu_web()



装饰器遵循的原则:1.不修改被装饰对象的源代码

2.不修改被调用对象的调用方式

装饰器的目的:在遵循1和2原则的前提下,为其它函数添加新功能

第一种:

import time

def index():

      time.sleep(3)

      print('welcome to index')


def home():

     time.sleep(2)

     print('welcome to home page')


def timmer(func):

     def wrapper():

          start=time.time()

          func()

          stop=time.time()

          print('run time is %s'%(stop-start))

     return wrapper


index=timmer(index)

home=timmer(home)

第二种:

import time

def timmer(func):

    def wrapper():

         start=time.time()

         func()

        stop=time.time()

        print('run time is %s'%(stop-start))

    return wrapper


@timmer

def index():

     time.sleep(3)

     print('welcome to index')


@timmer

def home():

    time.sleep(2)

    print('welcome to home page')


index()

home()

第一种和第二种的区别就是@符的使用,第二种方式中的@符相当于第一种的

index=timmer(index)

home=timmer(home)


装饰器修订(timmer函数)

def timmer(func):

    def wrapper(*args,**kwargs):

         start=time.time()

         func(*args,**kwargs)

        stop=time.time()

        print('run time is %s'%(stop-start))

    return wrapper

这样idex和home函数就可以传参数了


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值