生信log29|python装饰器一览及其在生信的作用(含命令行
2022-11-14 本文已影响0人
小周的万用胶囊
此前参加了一些生信的开源项目,在项目的代码中知道了“装饰器”的概念,也了解到了python中一些造好的装饰器。参与开源项目,先从python装饰器了解函数式编程开始
1、python装饰器是什么?
装饰器到底实现了什么
实现了函数式编程,讲人话就是做了函数一个外包的壳,数学公式中的f(g(x))中的f()。
- 语法糖(@外包函数名字)
def wrapper():
func = function()
func.split()
return wrapper
@wrapper
def 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)
- 在自己的项目增加新的功能,或者为自己的项目开源作准备(同上)