生信log29|python装饰器一览及其在生信的作用(含命令行装饰器click的简单
此前参加了一些生信的开源项目,在项目的代码中知道了“装饰器”的概念,也了解到了python中一些造好的装饰器。参与开源项目,先从python装饰器了解函数式编程开始
1、python装饰器是什么?
装饰器到底实现了什么
实现了函数式编程,讲人话就是做了函数一个外包的壳,数学公式中的f(g(x))中的f()。
def wrapper(): func = function() func.split() return wrapper@wrapperdef hello_world(): value = print("hello,world") return value常见的例子
- 外包在运行脚本外的计时脚本
- 用装饰器去生成HTML
2、python装饰器一览
一些官方的装饰器:
- click:一个传外部参数的装饰器
这个官方的装饰品实在是太好用啦,不仅可以取代argparse(click官方的解释是argparse不能分辨agrument 和option的类型,不能进行判断,并且在命令行不完整的情况下很容易出错)
- 下面是官方的例子
import click@click.command()@click.option('--count', default=1, help='Number of greetings.')@click.option('--name', prompt='Your name', help='The person to greet.')def hello(count, name): """Simple program that greets NAME for a total of COUNT times.""" for x in range(count): click.echo(f"Hello {name}!")if __name__ == '__main__': hello()
- 而且click是一个命令的nest,允许开发者建立subcommand。
- 个人使用感受:比argparse更容易添加子命令,形式上更加简单,而且很多开源项目都用到了click去管理软件中的子命令。
3、生信中的作用和IT中的作用
- 增加新的功能而不改变原来函数的结构
- 在开源项目中增加自己需要的新功能(通常是subcommand)
- 在自己的项目增加新的功能,或者为自己的项目开源作准备(同上)
参考
click官方文档
click中option和argument的区别 |
|
|
|
|