python基础(三)装饰器
字典推导式:
data_list = ['1 hello','2 world']
result = {item.split(" ")[0]: item.split(" ")[1] for item in data_list }
print(result)
data = 'wd=搜狗&rsv_spt=1&rsv_iqid=0xd787ab5d00049167&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=7&rsv_sug1=6&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=1988&rsv_sug4=2956'
res_list=data.split("&")
res_dic = {item.split('=')[0]:item.split("=")[1] for item in data.split("&")}
print(res_dic)
'''
字典转化为string
'''
params = {'wd': '搜狗', 'rsv_spt': '1', 'rsv_iqid': '0xd787ab5d00049167', 'issp': '1', 'f': '8', 'rsv_bp': '1', 'rsv_idx': '2', 'ie': 'utf-8',
'tn': 'baiduhome_pg', 'rsv_enter': '1', 'rsv_dl': 'tb', 'rsv_sug3': '7',
'rsv_sug1': '6', 'rsv_sug7': '101', 'rsv_sug2': '0', 'rsv_btype': 'i',
'inputT': '1988', 'rsv_sug4': '2956'}
li = []
for key,value in params.items():
# str=key+"="+value #相加效率低
str = "{}={}".format(key,value)
li.append(str)
res = "&".join(li)
print(res)
res = "&".join(["{}={}".format(key,value) for key,value in params.items()])
#集合推导式
data = {i for i in range(10)}
print(data)
闭包:函数嵌套函数,掉用外面函数 不想立即执行内容,在该函数内嵌套函数,让内部函数工作,可以在内部封装自己想要的东西
def outer(name):
def inner():
msg = "{}".format(name)
print(msg)
return inner
v = outer("Jack")
v2 = outer("Lily")
v()
v2()
线程池:
装饰器:在不改变函数的基础上 想在函数执行前后定制功能
def outer(a1):
def inner():
a1()
return inner
def x():
print("xx")
res = outer(x)
res()
@outer
def plus(v1):
return v1
res = plus(1)
print(res)
def outer(func):
def inner(*args,**kwargs):
return func(*args,**kwargs)
return inner
@outer
def plus(v1):
return v1
res = plus(1)
print(res)
"""计算一个函数的执行时间"""
import time
def coast(arg):
def inner():
start = time.time()
res = arg()
end = time.time()
print(end - start)
return res
return inner
@coast
def func():
data = 0
for i in range(10000000000):
data += i
return data
func()
def repeat_func(arg):
def inner():
result = 0
for i in range(5):
res = arg()
result += res
return result
return inner
@repeat_func
def f1():
return 123
t = f1()
print(t)
def outer(args):
def inner(a1,a2):
return args(a1,a2)
return inner
@outer
def plus(v1,v2):
return v1+v2
res = plus(1,3)
print(res)
def outer(args):
def inner(a1):
return args(a1)
return inner
@outer
def plus(v1):
return v1
res = plus(1)
print(res)
def outer(func):
def inner(*args,**kwargs):
return func(*args,**kwargs)
return inner
@outer
def plus(v1):
return v1
res = plus(1)
print(res)
"""
带参数的装饰器
"""
def tt(count):
def outer(func):
def inner(*args,**kwargs):
r = 0
for i in range(count):
res = func(*args,**kwargs)
r += res
return r
return inner
return outer
@tt(5)
def f(x):
return x
res = f(100)
print(res)
传统的装饰器是由两层嵌套,带参数的装饰器是三层。
python基础(三)装饰器的更多相关文章
- python基础—函数装饰器
python基础-函数装饰器 1.什么是装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的返回值是也是一个函数对象. 装饰器经常用于有切 ...
- 十. Python基础(10)--装饰器
十. Python基础(10)--装饰器 1 ● 装饰器 A decorator is a function that take a function as an argument and retur ...
- [python基础]关于装饰器
在面试的时候,被问到装饰器,在用的最多的时候就@classmethod ,@staticmethod,开口胡乱回答想这和C#的static public 关键字是不是一样的,等面试回来一看,哇,原来是 ...
- Day11 Python基础之装饰器(高级函数)(九)
在python中,装饰器.生成器和迭代器是特别重要的高级函数 https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...
- 1.16 Python基础知识 - 装饰器初识
Python中的装饰器就是函数,作用就是包装其他函数,为他们起到修饰作用.在不修改源代码的情况下,为这些函数额外添加一些功能,像日志记录,性能测试等.一个函数可以使用多个装饰器,产生的结果与装饰器的位 ...
- python基础之装饰器(实例)
1.必备 #### 第一波 #### def foo(): print 'foo' foo #表示是函数 foo() #表示执行foo函数 #### 第二波 #### def foo(): print ...
- 【Python基础】装饰器的解释和用法
装饰器的用法比较简单,但是理解装饰器的原理还是比较复杂的,考虑到接下来的爬虫框架中很多用到装饰器的地方,我们先来讲解一下. 函数 我们定义了一个函数,没有什么具体操作,只是返回一个固定值 请注意一下缩 ...
- 学习PYTHON之路, DAY 5 - PYTHON 基础 5 (装饰器,字符格式化,递归,迭代器,生成器)
---恢复内容开始--- 一 装饰器 1 单层装饰器 def outer(func): def inner(): print('long') func() print('after') return ...
- Python开发【第一篇】Python基础之装饰器
写代码要遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即: 封闭:已实现的功能代码块开放:对扩展开发 #s2 ...
- python基础-----函数/装饰器
函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 函数的优点之一是,可以将代码块与主程 ...
随机推荐
- SpringMvc(一)-初识
1.环境搭建 1.1 jar包 <spring.version>4.3.18.RELEASE</spring.version> <!-- spring-mvc begin ...
- HTTP2指纹识别(一种相对不为人知的网络指纹识别方法)
这是关于网络指纹识别的两部分系列的第二部分 上一部分我介绍了有关TLS 指纹识别方法(以及在不同客户端的指纹有何区别): https://mp.weixin.qq.com/s/BvotXrFXwYvG ...
- KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份
案例说明: KingbaseES V8R6通过sys_backup.sh执行物理备份,默认sys_backup.sh执行备份初始化时,需要连接test数据库进行身份的认证:在一些生产环境为了安全需求, ...
- Enable_hint_table 使用
KingbaseES enable_hint_table 可以看成类似 oracle outline 工具,可以在不修改SQL 的情况下,通过hint 改变SQL 的执行计划. 一.启用enable_ ...
- JAVA中让Swagger产出更加符合我们诉求的描述文档,按需决定显示或者隐藏指定内容
大家好,又见面啦. 在前一篇文档<JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率>中,我们探讨了如何通过自定义注解的方式扩展swagger的能力让Swag ...
- Python 第三次实验
一如既往地简单,不到半个小时即可完成 [1] (程序设计)输入一个正整数,输出它的因子分解式.如输入132,则输出132=122311 n=int(input()) print(1,end='') f ...
- 3、StringBuffer类
StringBuffer类 java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删 很多方法与String相同,但StringBuffer是可变长度的 StringB ...
- Markdowm基础语法的使用(typora)
Mackdown学习 一级标题:一个#加空格 回车 二级标题:两个#加空格 回车 以此类推... 一级标题(Ctrl+1) 二级标题(Ctrl+2) 三级标题(Ctrl+3) 四级标题(Ctrl+4) ...
- Kubernetes 配置管理
ConfigMap(可变配置管理) 对于应用的可变配置在 Kubernetes 中是通过一个 ConfigMap 资源对象来实现的,我们知道许多应用经常会有从配置文件.命令行参数或者环境变量中读取一些 ...
- CentOS yum如何安装php7.4
centos系统下使用yum安装php7.4正式版,当前基于WLNMP提供的一键安装包来安装 1.添加epel源 yum install epel-release 2.添加WLNMP一键安装包源 rp ...