热门发布
网 安 课 堂 网站域名那些事儿 跟着互联网的蓬勃发展,小我或企业开办的网站也越来越
技术学习 2025-04-14
“每逢佳节胖三斤”。有什么小本事可以在享受美食的同时治理好体重?大夫教你6个办法
生活常用 2025-04-15
1.山药插根筷子,好削皮 2.透明胶粘在扫把上,清算头发和灰尘 3.放片大蒜在食用油里,
生活常用 2025-04-24
每个人都希望自己拥有好的口才,无论是在职场上还是在生活中,好口才对个人的帮助是非
生活常用 2025-04-03
1、不管昨天如何,本日又是全新的开始。与其担忧未来,不如把每一天活得出色。专心
励志成长 2025-04-18

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

腊梅带雪霜 显示全部楼层 发表于 2025-1-2 09:45 |阅读模式 打印 上一主题 下一主题
此前参加了一些生信的开源项目,在项目的代码中知道了“装饰器”的概念,也了解到了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的区别
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有招是一个优质的生活妙招创作平台,在这里,你可以任意分享你的妙招经验,日常生活、技能学习、成长励志、恋爱婚姻……我们相信,每个人都有独特的生活妙招,有着无穷的创造力。
  • 官方手机版

  • 微信公众号

  • 商务合作