首页 > 编程语言 >python基础(三)装饰器

python基础(三)装饰器

时间:2022-11-11 12:22:18浏览次数:32  
标签:return python res 基础 inner outer rsv 装饰 def

字典推导式:

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)

传统的装饰器是由两层嵌套,带参数的装饰器是三层。

标签:return,python,res,基础,inner,outer,rsv,装饰,def
From: https://www.cnblogs.com/W505020235/p/16875270.html

相关文章

  • 狂神说Javase基础学习1
    狂神学习博客1基本的DOS命令打开CMD的方式1.开始+系统+命令提示符2.win+R,进入运行窗口,输入cmd打开控制台3.在任意的文件夹下面,Shift+鼠标右键,进入命令行窗口4.资源管......
  • 【python】循环import 及 import过程
    最近项目组用python,慢慢开始学习了。第一天就遇到了import问题。python语言的import有两种方法,一个是import模块名,一个是from模块名import函数或者类或者变量。直接impo......
  • 【Thrift】python 例子
    serviceMyService{stringget()}importsocketimportsyssys.path.append('./gen-py')fromhelloworldimportMyServicefromhelloworld.ttypesimport*fromthrift.tr......
  • python 小脚本
    1.乘法口诀表foriinrange(1,10):forjinrange(1,i+1):ji=i*jprint("{}*{}={}".format(i,j,ji),end='\t')print()2.11点游戏'......
  • C语言基础知识应用·
    一开始由算法开始,毕竟你以前学的算法和c有所不同然后开始学程序流程控制接着学内存处理机制提高深入编程然后与其他软件如sqlweb联系起来学习后面的看你自己需要......
  • 一个简单的步骤让你的 Python 代码更干净
    说起来容易做起来难,我们都知道代码可读性非常重要,但是写的时候总是随心所欲,不考虑类型提示、import排序、PEP8规范。今天分享一个小技巧,通过一个简单的步骤就可以让你的......
  • 老版本Python3.6 安装踩坑
    因业务需要安装老版本的python3.6.7,当前系统默认的python2.7brew安装的3.7 brew回退安装3.6.*版本的方式,网络上有很多。比较靠谱的可以用官网方式安装,见 ​​ht......
  • python和shell产生随机密码,哪个更方便
    一、Python#@File:生成随机密码.py#@desc:importstringimportrandom####侯选all_words=list(string.ascii_lowercase+string.ascii_uppercase+string.digits......
  • 【Linux】Ubuntu 18.04 Python修改 pip源为阿里源
    1.在home/用户名/目录下创建.pip文件夹cd~mkdir.pipcd~/.piptouchpip.conf2.编辑pip.conf文件,输入以下内容保存即可[global]trusted-host=mirrors.ali......
  • ERP 基础数据包括哪些?
    一套真正意义上的ERP系统,上千个数据表,单表字段数上百个,而基础数据首当其冲的就是物料BOM,这些数据包括物料基本数据、工艺流程等,物料表字段数数百个,如下图所示,涉及主要信......