python装饰器

python基础篇(完整版)

北战南征 提交于 2019-12-02 03:49:25
目录 计算机基础之编程和计算机组成 什么是编程语言 什么是编程 为什么要编程 编程语言的分类 机器语言(低级语言) 汇编语言 高级语言 计算机的五大组成 CPU(相当于人类的大脑) 多核CPU(多个大脑,同时(同一时刻)处理多件事情) 应用程序的启动流程 ROM存储器+CMOS存储器 硬盘工作原理 操作系统 什么是文件 什么叫应用程序 什么是操作系统 操作系统的作用 操作系统启动 应用程序和操作系统启动的区别 网络瓶颈效应 变量 什么事变量 变量的组成 变量名的命名规范 变量名的两种定义方式 定义变量的三个特征 常量 python内存管理方式 引用计数 垃圾回收机制 小整数池 执行python的两种方式 交互式 命令行式 花式赋值 注释 数据类型基础 数字类型 整形(int) 浮点型(float) 字符串类型 列表 字典 布尔类型 解压缩 与用户交互 python2中的与用户交互 三种格式化输出 占位符 format格式化 f-string格式化 基本运算符 算术运算符 逻辑运算符 赋值运算符 比较运算符 身份运算符 运算符的优先级(了解) 流程控制之if判断 单分支结构 双分支结构 多分支结构 if判断的嵌套 while循环 while + break while + continue while + else for循环 for + break for + continue

python之装饰器的两种写法

可紊 提交于 2019-12-02 03:19:45
上一篇文章介绍了 装饰器的概念。现在讲一下在程序中怎么来写装饰器。上代码: 1 def X(fun): 2 def Y(b): 3 print(b) 4 fun() 5 return Y 6 7 def test(): 8 print('OK') 9 10 test = X(test) 11 test(1) 前五行是一个闭包,因为内层函数的参数是外层函数的变量,而外层函数返回了内存函数的引用。 第10行,在调用函数X时,将函数test的引用(注意不是test(),没有小括号)作为参数传入,此时X(test)返回的是 Y函数的引用。所以第十行的结果就是test指向了Y函数的引用。所以,第11行的test()就是调用的Y函数的引用,同时Y函数中的fun()指向了第7行的test()函数。 第二种写法: 1 def X(fun): 2 def Y(b): 3 print(b) 4 fun() 5 return Y 6 7 @X #相当于 test = X(test) 8 def test(): 9 print('OK') 10 11 test(1) @在python中叫做语法糖,而@X 与test = X(test)等价,所以上面两种方法是等价的,只是第一种方法比较直观的展示了装饰器,而第二种写法比较美观简洁。 来源: https://www.cnblogs.com/GouQ/p

python之装饰器的概念

给你一囗甜甜゛ 提交于 2019-12-02 03:17:18
装饰器对于程序来说虽然不是必要的,但有时候却可以提高效率,也可以保证程序的安全。 说装饰器之前需要掌握闭包,前面一篇文章已经介绍过,这里不再重复。 那么,装饰器到底是什么东西呢?看下面这个例子 首先定义了一个函数 num,然后A B C D四个人都调用了这个函数。现在,A想对函数num的功能进行扩展,于是就修改了函数num的代码。那么问题来了,随着A修改了num的代码,导致了B C D三人在调用函数num的过程中也被迫调用了扩展后的num函数,可是B C D只想调用扩展之前的num函数怎么办呢?装饰器应运而生。 看下面这张图 这里,函数num经过装饰器装饰过后再被A调用,就可以实现功能的扩展,而B C D还是可以急需调用未被扩展前的num。 到这里,装饰器的功能就显而易见了: 在不修改原函数的情况下,给原函数扩展新的功能。 下面一篇介绍一下 装饰器的写法。 来源: https://www.cnblogs.com/GouQ/p/11728343.html

python字符串内置函数

孤街浪徒 提交于 2019-12-02 02:59:49
1、字符串 定义:它是一个有序的字符的集合,用于存储和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中间包含的内容称之为字符串特性:1.只能存放一个值2.不可变3.按照从左到右的顺序定义字符集合,下标从0开始顺序访问,有序补充:  1.字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l\thf'  2.unicode字符串与r连用必需在r前面,如name=ur'l\thf' 2、字符串常用操作 # 1字母处理: .upper() # 全部大写 .lower() # 全部小写 .swapcase() # 大小写互换 .capitalize() # 首字母大写,其余小写 .title() # 首字母大写 a='helLO' print(a.upper()) # 全部大写 print(a.lower()) # 全部小写 print(a.swapcase()) # 大小写互换 print(a.capitalize()) # 首字母大写,其余小写 print(a.title()) # 首字母大写 View Code # 2格式化相关 .ljust(width) # 获取固定长度,左对齐,右边不够用空格补齐 .rjust(width) # 获取固定长度,右对齐,左边不够用空格补齐 .center(width) #

Python装饰器(Decorators )

别等时光非礼了梦想. 提交于 2019-12-02 02:42:41
http://book.pythontips.com/en/latest/decorators.html 在《Built-in Functions(3.6)》和《Python上下文管理器》两篇笔记中,已经有了装饰器初步的示例,本篇结合一个高露洁大学牛人的博客来系统的解释下python中装饰器的作用。 一、首先提出一个统一的概念 Decorators are functions which modify the functionality of other functions. They help to make our code shorter and more Pythonic. 装饰器(也可以叫修饰器)的作用就是改变其他函数的运作方式,这可以使得代码更加简洁和Pythonic。 二、接下来一步一步的接近decorator 首先,函数是可以返回函数的,示例如下: def hi(name="Leo"): def greet(): return "恭喜!" def welcome(): return "欢迎!" if name == "Leo": return greet else: return welcome a = hi() print(a) # <function greet at 0x7f2143c01500> # 这说明这里的a就是greet(),因为默认name=

python 装饰器

核能气质少年 提交于 2019-12-02 00:34:49
import time def decorator(func): def wrapper(): print time.time() func() return wrapper def f1(): print('xxxxxx') f= decorator(f1) f() import time def decorator(func): def wrapper(): print time.time() func() return wrapper @decorator def f1(): print('xxxxxx') f1() import time def decorator(func): def wrapper(name): print time.time() func(name) return wrapper @decorator def f1(name): print('xxxxxx'+name) f1('eeeee') import time def decorator(func): def wrapper(*args): print time.time() func(*args) return wrapper @decorator def f2(n,m): print('xxxxxx'+n+m) f2(1,3) 来源: https://www.cnblogs.com

Python高阶用法总结

家住魔仙堡 提交于 2019-12-02 00:17:24
目录 1. lambda匿名函数 1.1 函数式编程 1.2 应用在闭包 2. 列表解析式 3. enumerate内建函数 4. 迭代器与生成器 4.1 迭代器 4.3 生成器 5. 装饰器 前言: 接触python有一段时间了,从开始的看菜鸟的python教程,看了一些视频,一些书。很多人感觉python很简单,确实相比其他语言,python可能稍微简单一点,但是不能说只学了python基础语法就说自己python水平可以了。最近在阅读YOLOv3的pytorch版本源码,就遇到很多瓶颈,很多是与python相关的。所以这篇进行总结一下,收集一下所有的问题,更深入理解python高阶用法,并且尽量每个都附上例子,做一个认真的coder,bloger。 1. lambda匿名函数 lambda匿名函数在一些工程项目中经常出现,理解该用法是读懂项目的前提。如: lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) 匿名函数就是没有定义函数的名称,用来实现简单的功能。 语法结构: lambda param_list: expression param_list 就是参数列表,相当于函数的参数 expression 就是表达式,相当于函数体,用一行进行表示 举个简单的例子: >>> func=lambda x, y: x+y

Python装饰器

本秂侑毒 提交于 2019-12-01 19:02:43
装饰器(无参)本质上它就是一个函数,同时函数作为它的形参,它的返回值也是一个参数,它可是使用@functionname方式,来简化调用!装饰器本质上来说,它就是高阶函数,但装饰器是对传入函数的功能的装饰(功能增强),所以叫装饰器。 比如现在有这样的一个需求,一个加法函数,现在想要增强它的功能,能够输出被调用过以及调用的参数信息。 def add(a,b): return a+b 要对这个函数增强,要是没有装饰器,会像下面这样来修改。 def add(a,b): print("call add,a+b")#日志输出到控制台 return a+b 上面的函数虽然完成了需求,但是它有弊端,第一是打印语句的耦合太高,第二是加法函数属于业务功能,而输出信息的功能则属于非业务功能代码,不应该放在业务函数的加法中。所以可以向下面的写法进化: def add(a,b): return a+b def logger(fn): print("begin")#增强的输出 x = fn(4,5) print("end")#增强的功能 return x print(logger(add)) 结果为: begin end 9 上面的代码虽然做了业务分离,但是fn函数的传参却又是个问题。因为函数把参数写死了。可以向下面这样修改: def add(x,y): return x + y def logger(fn,

python中的装饰器

北战南征 提交于 2019-12-01 16:51:36
什么是装饰器:可以理解为添加新的功能。定义:在不改变原被装饰的函数的源代码以及调用方式下,为其添加额外的功能。装饰器形成的过程 *args 接收:聚合 调用:打散import timeprint(time.time())time.sleep(3)#让程序执行到此位置的时候停留print('vhdihfiufhui')def timer(f):#计算函数的执行时间 start = time.time() f() end=time.time() print(end-start)def func(): time.sleep(1) print('hahahhah')timer(func)装饰器的作用:在不改变原函数的调用方式的情况下,在函数的前后添加功能装饰器的本质是:闭包原则:开放封闭原则 1.对扩展是开放的 2.对修改是封闭的     装饰器的固定模式def func(): time.sleep(2) print('哈哈哈哈哈')def timmer(func): #闭包 ----》指向func的内存地址 timmer就是一个装饰器函数 def inner(): start=time.time() func() #被装饰的函数 end=time.time() print(end-start) return innerfunc=timmer(func)

python中的装饰器练习

可紊 提交于 2019-12-01 16:51:24
一:编写装饰器,为多个函数加上认证的功能(用户的账号密码) 要求登录成功一次,后续的函数都无需输入用户名和密码FLAG=False#此时还未登录 全局变量 写这个步骤的意义在于:方便 知道已经登录成功了,就不再重复登录def login(func):#为多个函数加上的认证功能 def inner(*args,**kwargs):#加上装饰器 global FLAG#给函数内的全局变量赋值 if FLAG: ret = func(*args, **kwargs) # func就是被装饰的函数 return ret #'''写登录程序''' else: username=input('亲输入你的名字:') password=input('亲输入你的密码:') if username=='lxx' and password=='123': FLAG=True ret=func(*args,**kwargs) #func就是被装饰的函数 return ret else: print('错误,登录失败') return inner@logindef shoplist_add(): #两个函数有不同的功能 print('增加一件物品')@logindef shoplist_del(): print('删除一件物品')shoplist_add()shoplist_del()二:编写装饰器