# 一、闭包
#
# 判断:函数名.__closure__
# 若返回cell,则是闭包,返回None则不是闭包。
#
# 闭包:内层函数对外层函数非全局变量的引用就叫闭包。 def func1(x):
def func2():
print(x)
func2()
print(func2.__closure__)
return x name = '小明'
func1(name) # 以上这个函数,其实在执行func1(x)的时候,创建了一个x = '小明'的变量,所以,判断为闭包。
# 用处:当执行一个函数时,如果解释器判断此函数内部存在闭包,这样python就触发一个机制,闭
# 包的所在的临时名称空间不会随着函数的执行完毕而消失。(爬虫可以抓一次数据多次读取。)
# 二、装饰器

import time

def timmer(f):
def inner():
str_time = time.time()
f()
end_time = time.time()
print('此函数执行时间为:%s' % (end_time - str_time)) return inner def login():
time.sleep(3)
print('洗洗更健康...') login = timmer(login) # 在函数上一行加入 @装饰器函数名 ,等同于执行了 函数名 = 装饰器函数名(函数名)
import time def timmer(f):
def inner():
str_time = time.time()
f()
end_time = time.time()
print('此函数执行时间为:%s' % (end_time - str_time)) return inner @timmer
def login():
time.sleep(3)
print('洗洗更健康...')
# 在优化一下,让装饰器可以接受多个值,并且返回该函数的返回值。

import time

def timmer(f):
def inner(*args, **kwargs):
str_time = time.time()
ret = f(*args, **kwargs)
end_time = time.time()
print('此函数执行时间为:%s' % (end_time - str_time))
return ret
return inner @timmer
def login(a, b):
time.sleep(3)
print('洗洗更健康...%s, %s' % (a, b))
return 666

python 11的更多相关文章

  1. think in python 11 字典

    字典 字典类似于列表,但更加通用 键值对 ,字典是 键与值之间的映射,每个键都映射到一个值上 dict可以创建一个不包含任何项的字典 eng2sp = dict() print eng2sp 还可以给 ...

  2. selenium-webdriver(python) 11

    selenium-webdriver(python) (十一) 本节重点: 控制滚动条到底部 有时候我们需要控制页面滚动条上的滚动条,但滚动条并非页面上的元素,这个时候就需要借助js是来进行操作.一般 ...

  3. 【Python 11】汇率兑换4.0(函数)

    1.案例描述 设计一个汇率换算程序,其功能是将美元换算成人民币,或者相反. 2.0增加功能:根据输入判断是人民币还是美元,进行相应的转换计算 3.0增加功能:程序可以一直运行,知道用户选择退出 4.0 ...

  4. [ Python - 11 ] 多线程及GIL全局锁

    1. GIL是什么? 首先需要明确的一点是GIL并不是python的特性, 它是在实现python解析器(Cpython)时所引入的一个概念. 而Cpython是大部分环境下默认的python执行环境 ...

  5. python 1-1模块介绍和使用

    1. 什么是模块 1.1 模块就是一系列功能的集合体 1.1.1 模块有三种来源 1.内置的模块 2.第三方的模块 3.自定义模块 1.1.2 模块的格式: 1.使用Python编写的.py文件 2. ...

  6. python 11:range(起始索引,终止索引,步数)(默认情况下步数为1,生成从起始索引,每次增加(终止索引-起始索引)/步数,到终止索引前的数字串)

    squares = [] for value in range(1,11): #第三参数默认为1,生成从1开始,每次增加1步数,到11前的10为止的数字串 square = value ** 2 sq ...

  7. [Advanced Python] 11 - Implement a Class

    基础概念:[Python] 08 - Classes --> Objects 进阶概念:[Advanced Python] 11 - Implement a Class 参考资源:廖雪峰,面向对 ...

  8. 《转》python 11 表达式和语句

    转自 http://www.cnblogs.com/BeginMan/p/3164600.html 一.Python语句 if语句.else语句.elif语句.条件表达式.while语句.for语句. ...

  9. Python——11面向对象编程基础

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

随机推荐

  1. ThreadLocal之我所见

    网上有很多关于ThreadLocal的文章,大部分都提到了多线程之间共享资源的问题.其实ThreadLocal和多线程之间一点关系都没有.如果有,我怕是它的名字改成ThreadShare是不是更合适呢 ...

  2. 关于Struts2中 Action 配置method的解读

    为Action配置method属性: 将Action类中的每一个处理方法都定义成一个逻辑Action方法. <!DOCTYPE struts PUBLIC "-//Apache Sof ...

  3. 用with打开文件

    rep_word = 'The piece is gone, left the puzzle undone' # \ 换行,跟shell一样 with open('nothing', 'r', enc ...

  4. 实现我的第一个Java程序

    第一步.打开记事本 第二步.代码编写 public class Hello{ public static void main( String[] args){ System.out.println(& ...

  5. namespace的作用

    namespace的用法 1.什么是命名空间 通常我们学c++的时候经常看见头文件下有一句using namespace std,有什么用呢? 例如: #include<iostream> ...

  6. wifi探针的使用说明.

    我使用的是四博智联提供的WIFI探针 DT-06产品 点击打开链接 1. 数据读取 可以直接通过串口即可读取数据,串口波特率设置为 115200,其它选项默认. 如果需要PC机测试,请使用杜邦线转接到 ...

  7. java中的常用特殊字符

    1.转义字符反斜杠(\) 我们知道html中大都是双标签,如果在标签内想要输出带有标签结束符的文本都必须进行转义,html中是采用对应的字符替换,如<可用<替换 在java当中,我们要转义 ...

  8. jQuery 核心函数

    $() ;/  jQuery () ;  就代表调用 jQuery 的核心函数. 1. 接收一个函数. $(function(){ alret('hello world'); }); 2. 接收一个字 ...

  9. Qt笔记之QGADGET

    QGADGET宏类似于Q_OBJECT宏,是一个万能容器,至于这个宏所实现的功能,我也不懂,Q_OBJECT宏的功能到时了解一些,我想他们应该差不多,要想使用从Q_OBJECT继承来的类,就得在一开始 ...

  10. 详解angular2组件中的变化检测机制(对比angular1的脏检测)

    组件和变化检测器 如你所知,Angular 2 应用程序是一颗组件树,而每个组件都有自己的变化检测器,这意味着应用程序也是一颗变化检测器树.顺便说一句,你可能会想.是由谁来生成变化检测器?这是个好问题 ...