字典推导式:

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基础(三)装饰器的更多相关文章

  1. python基础—函数装饰器

    python基础-函数装饰器 1.什么是装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的返回值是也是一个函数对象. 装饰器经常用于有切 ...

  2. 十. Python基础(10)--装饰器

    十. Python基础(10)--装饰器 1 ● 装饰器 A decorator is a function that take a function as an argument and retur ...

  3. [python基础]关于装饰器

    在面试的时候,被问到装饰器,在用的最多的时候就@classmethod ,@staticmethod,开口胡乱回答想这和C#的static public 关键字是不是一样的,等面试回来一看,哇,原来是 ...

  4. Day11 Python基础之装饰器(高级函数)(九)

    在python中,装饰器.生成器和迭代器是特别重要的高级函数   https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...

  5. 1.16 Python基础知识 - 装饰器初识

    Python中的装饰器就是函数,作用就是包装其他函数,为他们起到修饰作用.在不修改源代码的情况下,为这些函数额外添加一些功能,像日志记录,性能测试等.一个函数可以使用多个装饰器,产生的结果与装饰器的位 ...

  6. python基础之装饰器(实例)

    1.必备 #### 第一波 #### def foo(): print 'foo' foo #表示是函数 foo() #表示执行foo函数 #### 第二波 #### def foo(): print ...

  7. 【Python基础】装饰器的解释和用法

    装饰器的用法比较简单,但是理解装饰器的原理还是比较复杂的,考虑到接下来的爬虫框架中很多用到装饰器的地方,我们先来讲解一下. 函数 我们定义了一个函数,没有什么具体操作,只是返回一个固定值 请注意一下缩 ...

  8. 学习PYTHON之路, DAY 5 - PYTHON 基础 5 (装饰器,字符格式化,递归,迭代器,生成器)

    ---恢复内容开始--- 一 装饰器 1 单层装饰器 def outer(func): def inner(): print('long') func() print('after') return ...

  9. Python开发【第一篇】Python基础之装饰器

    写代码要遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即: 封闭:已实现的功能代码块开放:对扩展开发 #s2 ...

  10. python基础-----函数/装饰器

    函数 在Python中,定义一个函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 函数的优点之一是,可以将代码块与主程 ...

随机推荐

  1. SpringMvc(一)-初识

    1.环境搭建 1.1 jar包 <spring.version>4.3.18.RELEASE</spring.version> <!-- spring-mvc begin ...

  2. HTTP2指纹识别(一种相对不为人知的网络指纹识别方法)

    这是关于网络指纹识别的两部分系列的第二部分 上一部分我介绍了有关TLS 指纹识别方法(以及在不同客户端的指纹有何区别): https://mp.weixin.qq.com/s/BvotXrFXwYvG ...

  3. KingbaseES V8R6备份恢复案例之--删除test数据库后sys_backup.sh备份

    案例说明: KingbaseES V8R6通过sys_backup.sh执行物理备份,默认sys_backup.sh执行备份初始化时,需要连接test数据库进行身份的认证:在一些生产环境为了安全需求, ...

  4. Enable_hint_table 使用

    KingbaseES enable_hint_table 可以看成类似 oracle outline 工具,可以在不修改SQL 的情况下,通过hint 改变SQL 的执行计划. 一.启用enable_ ...

  5. JAVA中让Swagger产出更加符合我们诉求的描述文档,按需决定显示或者隐藏指定内容

    大家好,又见面啦. 在前一篇文档<JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率>中,我们探讨了如何通过自定义注解的方式扩展swagger的能力让Swag ...

  6. Python 第三次实验

    一如既往地简单,不到半个小时即可完成 [1] (程序设计)输入一个正整数,输出它的因子分解式.如输入132,则输出132=122311 n=int(input()) print(1,end='') f ...

  7. 3、StringBuffer类

    StringBuffer类 java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删 很多方法与String相同,但StringBuffer是可变长度的 StringB ...

  8. Markdowm基础语法的使用(typora)

    Mackdown学习 一级标题:一个#加空格 回车 二级标题:两个#加空格 回车 以此类推... 一级标题(Ctrl+1) 二级标题(Ctrl+2) 三级标题(Ctrl+3) 四级标题(Ctrl+4) ...

  9. Kubernetes 配置管理

    ConfigMap(可变配置管理) 对于应用的可变配置在 Kubernetes 中是通过一个 ConfigMap 资源对象来实现的,我们知道许多应用经常会有从配置文件.命令行参数或者环境变量中读取一些 ...

  10. CentOS yum如何安装php7.4

    centos系统下使用yum安装php7.4正式版,当前基于WLNMP提供的一键安装包来安装 1.添加epel源 yum install epel-release 2.添加WLNMP一键安装包源 rp ...