码迷,mamicode.com
首页 > 编程语言 > 详细

day11-python基础

时间:2018-05-12 03:10:08      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:none   info   分享图片   一个   closure   内存   机制   2.3   地址   

day11

技术分享图片

day11    1

1.    函数名的应用(第一对象)    2

1.1.    1,直接打印函数名得到的是函数的内存地址    2

1.2.    2,函数名可以赋值运算    2

1.3.    3,函数名可以作为函数的参数    2

1.4.    4,函数名可以作为容器类数据类型的元素    2

1.5.    函数名可以当做函数的返回值    2

2.    闭包    2

2.1.    内层函数对外层函数非全局变量的引用就叫闭包    3

2.2.    判断是闭包函数名.__closure__    3

2.2.1.    返回的None则不是闭包,返回的是cell....则是闭包    3

2.3.    闭包有什么用?    3

2.3.1.    当执行一个函数时,如果解释器判断此函数内部闭包存在,Python有一个机制,闭包的所在的临时名称空间不会随着函数的执行完毕而消失。    3

3.    装饰器    3

3.1.    定义及应用    4

3.1.1.    装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。    4

3.1.2.    装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景。    4

3.2.    从简入繁    4

3.2.1.    初级装饰器    4

3.2.2.    语法糖    5

3.2.3.    带参数的装饰器    5

3.2.4.    hold住所有参数的装饰器    6

 

技术分享图片

  1. 函数名的应用(第一对象)

    技术分享图片

    1. 1,直接打印函数名得到的是函数的内存地址

    2. 2,函数名可以赋值运算

    3. 3,函数名可以作为函数的参数

    4. 4,函数名可以作为容器类数据类型的元素

    5. 函数名可以当做函数的返回值

  2. 闭包

    技术分享图片

    1. 内层函数对外层函数非全局变量的引用就叫闭包

    2. 判断是闭包函数名.__closure__

    技术分享图片

    1. 返回的None则不是闭包,返回的是cell....则是闭包

    1. 闭包有什么用?

    技术分享图片

    1. 当执行一个函数时,如果解释器判断此函数内部闭包存在,Python有一个机制,闭包的所在的临时名称空间不会随着函数的执行完毕而消失。

  3. 装饰器

    技术分享图片

    1. 定义及应用

    技术分享图片

    1. 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。

    2. 装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等场景。

    1. 从简入繁

    技术分享图片

    1. 初级装饰器

       

      import time

       

      def func1():

      print(‘in func1‘)

       

      def timer(func):

      def inner():

      start = time.time()

      func()

      print(time.time() - start)

      return inner

       

      func1 = timer(func1)

      func1()

       

      装饰器---简单版

    2. 语法糖

       

      import time

      def timer(func):

      def inner():

      start = time.time()

      func()

      print(time.time() - start)

      return inner

       

      @timer #==> func1 = timer(func1)

      def func1():

      print(‘in func1‘)

       

       

      func1()

       

      装饰器---语法糖

    3. 带参数的装饰器

       

      def timer(func):

      def inner(a):

      start = time.time()

      func(a)

      print(time.time() - start)

      return inner

       

      @timer

      def func1(a):

      print(a)

       

      func1(1)

       

      装饰器——带参数的装饰器

    4. hold住所有参数的装饰器

       

      import time

      def timer(func):

      def inner(*args,**kwargs):

      start = time.time()

      re = func(*args,**kwargs)

      print(time.time() - start)

      return re

      return inner

       

      @timer #==> func1 = timer(func1)

      def func1(a,b):

      print(‘in func1‘)

       

      @timer #==> func2 = timer(func2)

      def func2(a):

      print(‘in func2 and get a:%s‘%(a))

      return ‘fun2 over‘

       

      func1(‘aaaaaa‘,‘bbbbbb‘)

      print(func2(‘aaaaaa‘))

       

      装饰器---hold住所有参数的装饰器

day11-python基础

标签:none   info   分享图片   一个   closure   内存   机制   2.3   地址   

原文地址:https://www.cnblogs.com/changwentao/p/9026650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!