美文网首页生信log
生信log29|python装饰器一览及其在生信的作用(含命令行

生信log29|python装饰器一览及其在生信的作用(含命令行

作者: 小周的万用胶囊 | 来源:发表于2022-11-14 23:51 被阅读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)
    • 在自己的项目增加新的功能,或者为自己的项目开源作准备(同上)

    参考
    click官方文档
    click中option和argument的区别

    相关文章

      网友评论

        本文标题:生信log29|python装饰器一览及其在生信的作用(含命令行

        本文链接:https://www.haomeiwen.com/subject/gchvtdtx.html