初学Python-day12 装饰器函数
装饰器
1.概念
本质就是一个Python函数,其他函数在本身不变的情况下去增加额外的功能,装饰器的返回值是一个函数。
常用的场景:插入日志,事务处理,缓存,权限校验等。
2.普通函数回顾
1 def speak():
2 print('hello world')
3
4 say = speak
5 say()
3.函数的嵌套
1 def test1():
2 def test2():
3 print('test2')
4 def test3():
5 print('test3')
6 return test2
7 test2 = test1()
8 test2()
4.函数作为参数传递
1 def fun1(arg):
2 def test1():
3 print('---')
4 arg()
5 print('---')
6 return test1
7
8 def say():
9 print('hello world!')
10
11 test1 = fun1(say)
12 test1()
5.装饰器
1 def fun1(arg):
2 def test1():
3 print('=========')
4 arg()
5 print('=========')
6 return True
7 return test1
8
9
10 @fun1
11 def say():
12 print('hello world!')
13
14 say()
15 print(say.__name__)
6.带参数的装饰器
如果需要给装饰器传入参数,则在嵌套一层函数即可
1 from datetime import datetime
2
3
4 def log(text):
5 def decorator(fun1):
6 def warrper(*args, **kwargs):
7 print(text, fun1.__name__)
8 return fun1(*args, **kwargs)
9 return warrper
10 return decorator
11
12
13 @log('text')
14 def now():
15 print(datetime.now())
16
17 now()
18 print(now.__name__)
7.偏函数
--int函数
将字符串中的数值转换为十进制
1 print(int('10'))
2 print(int('10', base=2))
初学Python-day12 装饰器函数的更多相关文章
- python学习——装饰器函数
一.装饰器函数的作用是什么 答:装饰器函数是在不修改原函数及其调用方式的情况下对原函数功能进行扩展 对于搞python开发的人来说,函数占据了至关重要的地位.都说学好函数你就可以去找工作了,好了,假如 ...
- python之装饰器函数
本章内容 引入 装饰器的形成过程 开放封闭原则 谈装饰器主要功能和装饰器固定结构 带参数的装饰器 多个装饰器装饰一个函数 引入 作为一个会写函数的python开发,我们从今天开始要去公司上班了.写了一 ...
- python递归,装饰器,函数, 高阶函数
在函数内部,可以调用其它函数,如果一个函数在内部调用自身本身,这个函数就是递归函数 递归特性:1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模比上次递归都有所减少(10-8-5等) ...
- python之装饰器(函数)
1. 装饰器 遵循的原则: 开闭原则: 对功能的扩展开放 对代码的修改是封闭 # 通用装饰器写法 # 存在的意义: 在不破坏原有函数和原有函数调用的基础上,给函数添加新的功能. def wrapp ...
- 【Python】装饰器实现日志记录
好的日志对一个软件的重要性是显而易见的.如果函数的入口都要写一行代码来记录日志,这种方式实在是太低效了,但一直没有找到更好的方法.后来用python写一些软件,了解到python的装饰器功能时,突然人 ...
- python基础篇_004_装饰器函数
python装饰器函数 1.装饰器函数引导 功能:计算函数执行时长 import time """ 方式一: 函数首位添加时间,差值就是函数执行时间 缺点:每个函数都要加 ...
- python基础 (装饰器,内置函数)
https://docs.python.org/zh-cn/3.7/library/functions.html 1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
- python基础(8)-装饰器函数&进阶
从小例子进入装饰器 统计一个函数执行耗时 原始版本 import time # time模块有提供时间相关函数 def do_something(): print("do_something ...
- 如何用python的装饰器定义一个像C++一样的强类型函数
Python作为一个动态的脚本语言,其函数在定义时是不需要指出参数的类型,也不需要指出函数是否有返回值.本文将介绍如何使用python的装饰器来定义一个像C++那样的强类型函数.接下去,先介绍 ...
- python通过装饰器检查函数参数的数据类型的代码
把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容. def check_accepts(f): assert len(types) == f. ...
随机推荐
- 字符串截取子串(Java substring , indexOf)
前言 因为之前java课设做的是股票分析系统,我找的接口返回的是一个.csv文件,因为这种文件里面的数据是以逗号分隔的,所以要对数据进行分析的时候需要截取子串,并且以逗号作为截取的标志.所以接下来就说 ...
- EFCore 开始
1. 数据准备 新建类库项目--实体 NuGet安装: Microsoft.EntityFrameworkCore 新建类库项目--DbContext NuGet安装: Microsoft.Entit ...
- Python之sqlite3模块
python自带有sqlite3模块,该模块可以方便我们操作sqlite数据库,下面一起跟随示例了解sqlite3模块的具体用法. import sqlite3 # 连接数据库 connection ...
- CSP 2021 游记
\(\text{Day -INF}\) 看见了 \(\text{SCP2021}\) 的报名通知,想着应该教练会让我们统一报名,就没放在心上 然后-- 然后过了二十多天教练根本没有提报名的事情,搞得我 ...
- Docker(34)- 如何修改 docker 容器的目录映射
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 问题背景 docker run ...
- Selenium自动化实现web自动化-1
框架搭建 基于maven+jdk8+junit5+seleium 构建 <dependencies> <dependency> <groupId>org.junit ...
- 密钥交换协议之IKEv2
1. IKEv2 1.1 IKEv2简介 IKEv2(Internet Key Exchange Version 2,互联网密钥交换协议第 2 版)是第 1 版本的 IKE 协议(本文简称 IKEv1 ...
- 如何在C#中打开和读取EXCEL文件
这篇文章向您展示如何在C#Windows Forms Application中使用ExcelDataReader,ExcelDataReader.DataSet打开和读取Excel文件.创建一个新的W ...
- API:获取当前用户的公网IP
在vue项目根目录下" public " 文件夹中的index.html,也就是根节点所在的文件引入JS,vue项目中静态文件需要在这里引入,用 script 标签规避跨域 < ...
- apachectl命令
Linux apachectl命令可用来控制Apache HTTP服务器的程序. apachectl是slackware内附Apache HTTP服务器的script文件,可供管理员控制服务器,但在其 ...