python 装饰器--对有无参数的函数进行装饰
# 使用装饰器无参数的函数进行装饰
# def func(funcionName):
# print('-----1------')
# def func_in():
# print('--func_in---')
# funcionName()
# print('--func_2---')
# print('-----2------')
# print('-----3------')
# return func_in
# @func # test = func(test)
# def test():
# print('----testa=%d,b=%d-----'%)
# test()
# -----1------
# -----2------
# -----3------
# --func_in---
# ----test-----
# --func_2---
# 使用装饰器对有参数的函数进行装饰
# def func(funcionName):
# print('-----1------')
# def func_in(a,b): #如果a,b没有定义,那么会导致40号调用失败
# print('--func_in---')
# funcionName(a,b) # 如果没有把a,b当做实参进行传递,那么会导致调用37行失败
# print('--func_2---')
# print('-----2------')
# print('-----3------')
# return func_in
# @func
# def test(a,b): #37行
# print('----test---a=%d,b=%d-----'%(a,b))
# test(10,11) #40行
# 对不定性参数传递
def func(funcionName):
print('-----func---1------')
def func_in(*args,**kwargs):
# *args 将来是以元组保存,没有进行拆包
# **kwargs 将来是以字典保存,没有进行拆包
print('--func_in---1---')
funcionName(*args,**kwargs)
print('--func_in----2---')
print('-----func---2------')
return func_in
@func
def test(a,b,c):
print('----test---a=%d,b=%d,c=%d-----'%(a,b,c))
@func
def test2(a,b,c,d):
print('----test---a=%d,b=%d,c=%d,d=%d-----'%(a,b,c,d))
test(10,11,9)
test2(10,11,9,11)
# -----func---1------
# -----func---2------
# -----func---1------
# -----func---2------
# --func_in---1---
# ----test---a=10,b=11,c=9-----
# --func_in----2---
# --func_in---1---
# ----test---a=10,b=11,c=9,d=11-----
# --func_in----2---
python 装饰器--对有无参数的函数进行装饰的更多相关文章
- 装饰器带类参数 & 一个函数应用多个装饰器
装饰器:不改变原函数的基础上,给函数增加功能的方式,称为装饰器 即:为已经存在的对象添加额外的功能 装饰器其实就是一个闭包,把一个函数当做参数后返回一个替代版的函数 decos.py:(装饰器的参数类 ...
- 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况
装饰器分成三种: 1.无参数的: 2.有参数的: 3.装饰器本身带参数的. 装饰器decorator又叫语法糖 定义:本质是函数,器就是函数的意思.装饰其他函数.就是为其他函数添加附加功能. 原则: ...
- python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)
一.函数名应用 函数名是什么?函数名是函数的名字,本质:变量,特殊的变量. 函数名(),执行此函数. python 规范写法 1. #后面加一个空格,再写内容,就没有波浪线了. 2.一行代码写完,下面 ...
- python 装饰器 第六步:带有收集参数的函数的装饰器
#第六步:带有收集参数的函数的装饰器 #装饰器函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(*w,**n): #以下三步就是扩展之后的功能,于是 ...
- python笔记3 闭包 装饰器 迭代器 生成器 内置函数 初识递归 列表推导式 字典推导式
闭包 1, 闭包是嵌套在函数中的 2, 闭包是内层函数对外层函数的变量(非全局变量)的引用(改变) 3,闭包需要将其作为一个对象返回,而且必须逐层返回,直至最外层函数的返回值 闭包例子: def a1 ...
- python装饰器探究与参数的领取
首先上原文, 现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为"装饰器" ...
- Python基础(7)_闭包函数、装饰器
一.闭包函数 闭包函数:1.函数内部定义函数,成为内部函数, 2.改内部函数包含对外部作用域,而不是对全局作用域名字的引用那么该内部函数成为闭包函数 #最简单的无参闭包函数 def func1() n ...
- [python 基础]python装饰器(二)带参数的装饰器以及inspect.getcallargs分析
带参数的装饰器理解无非记住两点: 1.本质不过在基本的装饰器外面再封装一层带参数的函数 2.在使用装饰器语法糖的时候与普通装饰器不同,必须要加()调用,且()内的内容可以省略(当省略时,admin默认 ...
- python 装饰器(六):装饰器实例(三)内置装饰器
内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. def getx(sel ...
随机推荐
- 第三节,CNN案例-mnist手写数字识别
卷积:神经网络不再是对每个像素做处理,而是对一小块区域的处理,这种做法加强了图像信息的连续性,使得神经网络看到的是一个图像,而非一个点,同时也加深了神经网络对图像的理解,卷积神经网络有一个批量过滤器, ...
- 困在栅栏里的恺撒WriteUp(附栅栏密码加密解密脚本)
题目地址:http://www.shiyanbar.com/ctf/1867 这道题目并不难,就是先用栅栏密码解密,然后再用恺撒密码解密就好. 1. 6代表了栅栏密码的栏数(说实话,一开始我也没看出来 ...
- mvc5怎么给所有action都设置几个公用的ViewBag
最近开发项目中遇到这样的问题,因为有多个同步的页面,所以需要在多个同步页面上有相同的值返回回来,经过一系列的思维,我们把思维整理出来. public ActionResult Index() { Vi ...
- layout 的应用
在XAF的开发中,详细Detail 或组合DashBoard页面,需要使用 LayoutControl 进行控件排列,下面讲述如何通过写代码进行操作. 0.DevExpress 的布局控件(DevEx ...
- python3+selenium入门06-浏览器操作
WebDriver主要提供元素操作的方法,但也提供了一些关于浏览器操作的方法,比如设置浏览器大小,浏览器前进,后退,刷新等 设置浏览器大小 有时候需要设置浏览器大小,比如访问收集网页,设置浏览器大小跟 ...
- hibernate框架学习之增删改查helloworld
插入数据删除数据修改数据查询单条数据查询多条数据 HelloWorldApp.java package cn.itcast.h3.helloworld; import org.hibernate.Se ...
- LIght OJ 1179
题意: 约瑟夫环问题, 给你N 个人, 没K个出队, 问最后剩下的人的编号. 思路: 直接模拟会T, 对于N个人 , 是一个约瑟夫环问题, 当第一个人出队后, (标号一定为 k % n -1) 剩下的 ...
- HDU 5288 OO’s Sequence
题意: 给你一个序列, 有一个函数 F(L,R) 其中 ai 均不能 被 aL - aR整除的 函数值是这个ai个数 思路 : 反过来求 满足这样的条件的 ai 的区间,然后求和 #include& ...
- Github+HEXO FATAL bad indentation of a mapping entry at line 84
当配置玩_config.yml文件时,执行hexo g -d时出现错误如下: $ hexo g -d FATAL can not read a block mapping entry; a multi ...
- swift 学习- 26 -- 泛型
// 泛型 代码能够让你根据自定义的需求,编写出适用于任意类型, 灵活可重用的函数以及类型, 它能让你避免代码的重复, 用一种清晰和抽象的方式来表达代码的意图 // 泛型是 Swift 最强大的特性之 ...