博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python装饰器实现类Java注解功能
阅读量:4504 次
发布时间:2019-06-08

本文共 750 字,大约阅读时间需要 2 分钟。

 

最近想用Python写一个简单生成器,类似指定类型和范围,返回指定列表;

 

比如想要  0 ~ 3 的整数,则 我只需要指定:

  最小:0,

  最大:3,

  步长:1

 

则返回一个 [0,1,2,3] 的列表

 

思路是用Python 装饰器,在def方法上打装饰器,装饰器内部替换方法调用时传入的参数值

代码如下:

 

1 # coding=utf-8 2  3 def integer(min=0, max=100, step=1): 4   def deco(func): 5     def wrapper(val): 6       val = [] 7       for i in range(min, max, step): 8         val.append(i)   # 将入参修改掉 9       return func(val)10     return wrapper11   return deco12 13 14 @integer(1, 40)15 def id(val):16   return val17 18 a = id(None)19 print(a)

 

这样 打印 的 a的值就是我要的列表:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,

23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]

比Java annotation写起来方便多了,Python大法好!

转载于:https://www.cnblogs.com/Joynic/p/11266553.html

你可能感兴趣的文章
【HNOI2008】玩具装箱
查看>>
GCD Operation 等线程知识点 在IOS Developer Library 中的位置
查看>>
1284 2 3 5 7的倍数 分类: 51nod ...
查看>>
r函数知识总结
查看>>
dds数字信号发生器
查看>>
Java简介(1)
查看>>
ui-router 1.0 003 lazyloading
查看>>
Lua编程
查看>>
程序中堆和栈的区别
查看>>
imx6 lvds 代码分析
查看>>
通过代码创建联系人
查看>>
大数智能未来
查看>>
jQuery插件实现网页底部自动加载-类似新浪微博
查看>>
学生空间bug report
查看>>
shanchushanchu
查看>>
linux下使用autoconf制作Makefile
查看>>
快来秒杀我
查看>>
Python_阻塞IO、非阻塞IO、IO多路复用
查看>>
爬虫超时解决的方法
查看>>
网络技术和科技革命周末随想
查看>>