生信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的区别
页:
[1]