python——装饰器(不定长参数,闭包,装饰器)示例
- def func(functionName):
- print("正在装饰")
- def func_in(*args, **kargs):
- print("------func_in---1--")
- res = functionName(*args, **kargs)
- print("------func_in---2---")
- return res
- print("装饰结束")
- return func_in
- # 再还没有执行test函数的时候就开始装饰
- @func
- def test(a, b):
- print("--------test a=%d b=%d -----" % (a, b))
- @func
- def test2(a, b, c, d):
- print("--------test2 %d %d %d %d -------" % (a, b, c, d))
- @func
- def test3():
- return "hahaha"
- print("%%%%%%%%%%%%%%%%%%% 不定长参数 %%%%%%%%%%%%%%%%")
- test(1, 2)
- test2(1, 2, 3, 4)
- print("%%%%%%%%%%%%%%%%%%% 返回值 %%%%%%%%%%%%%%%%")
- res = test3()
- print("test3 return value is %s" % res)
运行结果:
- 正在装饰
- 装饰结束
- 正在装饰
- 装饰结束
- 正在装饰
- 装饰结束
- %%%%%%%%%%%%%%%%%%% 不定长参数 %%%%%%%%%%%%%%%%
- ------func_in---1--
- --------test a=1 b=2 -----
- ------func_in---2---
- ------func_in---1--
- --------test2 1 2 3 4 -------
- ------func_in---2---
- %%%%%%%%%%%%%%%%%%% 返回值 %%%%%%%%%%%%%%%%
- ------func_in---1--
- ------func_in---2---
- test3 return value is hahaha
装饰器中return
- from time import ctime, sleep
- def func_args(args = "hello"):
- def func(functionName):
- print("正在装饰")
- def func_in():
- print("###### %s called in %s used %s ######" % (functionName.__name__, ctime(), args))
- functionName()
- return func_in
- return func
- # 先执行func_args("hahah"),给args赋值,返回func的引用
- # @func
- # 使用@func对函数进行装饰
- @func_args("hahah")
- def test1():
- print("--------test1--------")
- @func_args("heihei")
- def test2():
- print("---------test2----------")
- # 带有参数的装饰器,能够起到,在运行时,根据参数值得不同,实现不同的功能
- test1()
- test2()
运行结果:
- 正在装饰
- 正在装饰
- ###### test1 called in Sun Aug 26 14:53:34 2018 used hahah ######
- --------test1--------
- ###### test2 called in Sun Aug 26 14:53:34 2018 used heihei ######
- ---------test2----------
python——装饰器(不定长参数,闭包,装饰器)示例的更多相关文章
- python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)
默认参数:定义函数的时候给定变量一个默认值. def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用. 关键字参数:如果定义的函数中含有关键字参数,调用函数 ...
- Python 不定长参数、全局变量、局部变量 day4
一.不定长参数 在函数定义中,经常会碰到*args 和**kwargs作为参数. 事实上在函数中,*和**才是必要的,args和kwargs可以用其他名称代替 *args 是指不定数量的非键值对参数. ...
- 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类 Python中函数参数定义及调用函数时传参 ...
- python函数中的不定长参数
python自定义函数中有两中不定长参数,第一种是*name,第二种是**name.加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数.加了两个星号 ** 的参数会以字典的 ...
- python不定长参数 *argc,**kargcs(19)
在 python函数的声明和调用 中我们简单的了解了函数的相关使用,然而在函数传递参数的时候,我们埋下了一个坑,关于不定长参数的传递我们还没有讲,今天这篇文章主要就是讲解这个问题. 一.函数不定长参数 ...
- python笔记(2)---不定长参数
python自定义函数中有两种不定长参数, 第一种是*name:加了星号 * 的参数会以元组(tuple)的形式导入 第二种是**name:加了星号 * *的参数会以字典(dict)的形式导入 *na ...
- python中函数的不定长参数
例1: #定义一个含有不定长参数的函数,本例第三个参数*args def sum_nums(a,b,*args): print('_'*30) print(a) print(b) print(args ...
- python 不定长参数
1 #不定长参数 * 元祖 ** 字典 2 def item(a,b,*c,**d): 3 print(a) 4 print(b) 5 print(c) 6 print(d) 7 8 item(11, ...
- java 不定长参数
一,不定长参数的规定 一个方法只能有一个不定长参数,并且这个不定长参数必须是该方法的最后一个参数. 示例: public class VariArgs { public static void mai ...
随机推荐
- OpenCl入门getting-started-with-opencl-and-gpu-computing
原文来自于:getting-started-with-opencl-and-gpu-computing/ 对整个程序的注释:http://www.kimicat.com/opencl-1/opencl ...
- Activiti使用总结
工作流在我们日常的工作中用得可谓相当普及,尤其在企业内部管理系统,如考勤.财务.合同等系统中更是离不开它.在我们金融科技领域,工作流主要用于贷款审批.风控审核等环节.早期工作流在企业信息化发挥着很重要 ...
- 使用 django-redis 作缓存
1 缓存内容使用 django支持多种不同的cache backend,默认使用的是localmem,django-redis 是一个使django支持 redis cache的功能组件. 安装 p ...
- 01_日志采集框架Flume简介及其运行机制
离线辅助系统概览: 1.概述: 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出. 任务调度等不可或缺的辅助系统,而这些辅助 ...
- 顺丰科技面试-java开发
顺丰科技的面试官感觉人都挺随和,总共经历三面,两轮技术面,一轮hr面. 一.专业面一 主要是对着我的简历上的东西问,我的一个项目经历,两个实习上面以及自己提到会的技能展开的提问. (1)自我简介 (2 ...
- 用代理服务加快brew下载速度。方法:curl
加快brew更新速度的方式:用代理 参考: https://www.zhihu.com/question/31360766常用的ss客户端都自带PAC模式的,比如ShadowsocksX-NG. 再次 ...
- Spark任务调度初识
前置知识 spark任务模型 job:action的调用,触发了DAG的提交和整个job的执行. stage:stage是由是否shuffle来划分,如果发生shuffle,则分为2个stage. t ...
- c语言第一次作业1
第一次作业 一 你对软件工程或者计算机科学与技术专业的了解是什么? 软件工程是一门研究用工程化方法构建和维护有效的,实用的和高质量的软件的学科,涉及程序语言设计,数据库,软件开发工具,系统平台,设计模 ...
- django缓存--缓存加数据库型
4.缓存+数据库Session 数据库用于做持久化,缓存用于提高效率 a. 配置 settings.py SESSION_ENGINE = 'django.contrib.sessio ...
- 记录 vant Picker 选择器,实现三级联动,传对应省市区code值
最近使用vant UI写移动端,感觉还不错 功能挺全的,带的还有省市区三级联动. 但是 突然遇到一个 产品要传的 省市区的code码,还和vant的 邮编不一样,我*****. 看了一下vant UI ...