# 一、闭包
#
# 判断:函数名.__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. SpringBoot是什么,可以做什么?

    SpringBoot简析 1.SpringBoot是什么?    在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring.SpringMvc框架等,Spring的核心内容在于控制反转( ...

  2. hello2 源码分析

    1.GreetingServlet.java(问候页面): /** * Copyright (c) 2014 Oracle and/or its affiliates. All rights rese ...

  3. Oracle Database 11g安装及报错处理(win7)

    稍后会将安装过程上传.Oracle数据库安装先决条件检查失败解决方案: 1,检查失败信息中,预期值:N/A  实际值:N/A ,并未出现具体的值  查看  “详细信息” . 引起失败的原因是:无法在指 ...

  4. Jeecg

    姓名:黄于霞          班级:软件151 1.第一步将Jeecg引包到javaEE中,如图下图所示: 2.第二步改jeecg_config.properties中的用户名和密码改成和数据库中一 ...

  5. axios 发送post请求的时候会发送两次

    第一次发送的时候会先发送OPTIONS, 第二次才发送POST, 解决方法: 引用qs模块 安装qs依赖 npm install qs --save 引入qs依赖 import qs from 'qs ...

  6. linux IPtable防火墙 禁止和开放端口

    1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放.下面是命令实现: iptables -P INPUT DROPiptables -P FORWARD DROPiptable ...

  7. JS-5-循环

    循环结构 循环:反复执行有关操作 * for循环 for(var i=1; i<=50; i++) { console.log("第"+i+"次说我爱你" ...

  8. Linux权限总结

    第1章 课前小拓展 虚拟机打不开原因 问题: 该虚拟机似乎正在使用中. 如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权.否则,请按“取消(C)”按钮以防损坏. 配置文件: E:\vm ...

  9. node-express-2-jade

    1,Jade里可以省略尖括号,直接写标签名 2,标签间的嵌套关系用换行加空格来实现 3,紧接在标签名后加上.xx或#xx,就能给标签添加css类名和id,如果不写标签名默认就是div 4,标签属性写入 ...

  10. JAVA第2课

         JAVA   第二课 Eclipse 在加载JAVA环境出错的时候处理办法: 项目-属性-Java build path-add library -JRE system library-OK ...