typer 模块与装饰器

当使用 Typer 模块时,可以创建一个简单的命令行应用程序示例。以下是一个使用 Typer 创建的示例:

import typerapp = typer.Typer()@app.command()
def greet(name: str):typer.echo(f"Hello, {name}!")@app.command()
def answer(name: str):typer.echo(f"I'am fine, {name}!")if __name__ == "__main__":app()

在这个示例中,我们导入了 typer 模块并创建了一个 Typer 对象 app。然后,我们使用 @app.command() 装饰器将函数 greet 注册为一个命令。

greet 函数接受一个名为 name 的参数,并使用 typer.echo() 打印出一个问候语。

最后,我们使用 if __name__ == "__main__": 来确保只有在直接运行脚本时才执行 app(),而不是在导入为模块时执行。

你可以在命令行中运行这个示例,例如 python script.py greet jhon,它将输出 Hello, jhon!。这是一个简单的 Typer 模块示例,你可以根据需要扩展和定制它。

下面我们来看下修改装饰器会发生什么

import typerapp = typer.Typer()@app.command("decorator")
def greet(name: str):typer.echo(f"Hello, {name}!")@app.command()
def answer(name: str):typer.echo(f"I'am fine, {name}!")if __name__ == "__main__":app()

当我们输入python script.py decorator jhon 时它将输出 Hello, jhon !

接下来我们自定义一个装饰器

from enum import Enum
import typerapp = typer.Typer()class TriggerOn(Enum):PreSubmit = "change-content",PostSubmit = "change-commit",def trigger(name: str, trigger_on: TriggerOn, depot_path: str, param: str = ""):def decorator(func):print(depot_path)return funcreturn decorator@app.command("decorator")
def greet(name: str):typer.echo(f"Hello, {name}!")@app.command()
def answer(name: str):typer.echo(f"I'am fine, {name}!")@trigger("res_check.main", TriggerOn.PreSubmit,"//JF_UEProj/main/Common/SpeedGame/Content/...")
@trigger("res_check.RelDM19", TriggerOn.PreSubmit,"//JF_UEProj/BR_PRacing_RelDM19/Common/SpeedGame/Content/...")
@trigger("res_check.Dev", TriggerOn.PreSubmit,"//JF_UEProj/BR_PRacing_Dev/Common/SpeedGame/Content/...")
@trigger("res_check.RelV1", TriggerOn.PreSubmit,"//JF_UEProj/BR_PRacing_RelV1/Common/SpeedGame/Content/...")
@app.command("res_check")
def res_check(change, user, client):typer.echo("change:{0},user:{1},client:{2}".format(change, user, client))if __name__ == "__main__":app()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux入门以及Linux文件编程学习

Linux学习必备 首先我们学习Linux必须安装一个虚拟机,我是跟着韦东山老师安装的,具体可以跟着视频操作,简单易懂:安装虚拟机 Linux入门最基本简单的指令 一、Vi的使用 Vi文件名 创建或者打开一个文件,进入默认命令行…

notes for datawhale summer camp NPL task3

了解 Transformer 模型,并基于 Transformer 模型实现在机器翻译任务上的应用! Transformer 介绍 基于循环或卷积神经网络的序列到序列建模方法是现存机器翻译任务中的经典方法。然而,它们在建模文本长程依赖方面都存在一定的局限性。 为了…

Java多线程游戏——坦克大战

一.游戏登陆界面 package TankFight;import javax.swing.*; import java.awt.*;public class GameUI {public void initUI() {JFrame jf new JFrame();jf.setSize(1100, 900);//设置窗口大小jf.setTitle("坦克大战" );//设置窗口标题jf.setLocationRelativeTo(null…

[PM]产品运营

生命周期 运营阶段 主要工作 拉新 新用户的定义 冷启动 拉新方式 促活 用户活跃的原因 量化活跃度 运营社区化/内容化 留存 用户流失 培养用户习惯 用户挽回 变现 变现方式 付费模式 广告模式 数据变现 变现指标 传播 营销 认识营销 电商营销中心 拼团活动 1.需求整理 2.…

大数据之路 读书笔记 Day7 实时技术 简介及流式技术架构

回顾: Day6 离线数据开发之数据开发平台Day5 数据同步遇到的问题与解决方案 1. 简介 阿里巴巴在流式数据处理方面采用了多种技术和框架,这些技术的特点包括: 高可伸缩性: 阿里巴巴使用Apache Flink进行大规模数据处理&#xff0c…

docker 容器内安装pdo_mysql扩展

1. 首先确定php配置文件(php.ini)打开了pdo_mysql注释。(php.ini位置:运行容器时挂载文件时,指定的php.ini位置) 2. 进入倒php容器内:docker exec -it 容器名 bash 3. 确认php扩展目录没有pdo…

Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

创建仓库 创建一个Springboot项目,勾选web将该项目创建git本地仓库,再创建远程仓库推送上去 创建TestController RestControllerRequestMapping("/test")public class TestController {GetMapping("/hello")public String sayHell…

6.Kafka Acks详解

目录 概述Replication(分区副本)In-sync replicasAcknowledgementsacks0acks1acksallAck实用建议Minimum in-sync replicaCaveat(警告) 概述 本文对 kafka 的一些核心概念进行解释,也是 kafka 需要调优的一些地方。 官方原文速递 Replication(分区副本) 对于每个分…

如何识别Android init 中的缓慢操作

Android 14 开机时间优化措施汇总-CSDN博客 Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客Android系统设置kernel log level的…

222.买卖股票的最佳时机(力扣)

代码解决 class Solution { public:int maxProfit(vector<int>& prices) {// 初始化最小买入价为第一个价格int min1 prices[0];// 初始化最大利润为0int max1 0;// 从第二天开始遍历价格数组for (int i 1; i < prices.size(); i) {// 计算当前价卖出的利润&a…

windows edge自带的pdf分割工具(功能)

WPS分割pdf得会员&#xff0c;要充值&#xff01;网上一顿乱找&#xff0c;发现最简单&#xff0c;最好用&#xff0c;免费的还是回到Windows。 Windows上直接在edge浏览器打开PDF&#xff0c;点击 打印 按钮,页面下选择对应页数 打印机 选择 另存为PDF&#xff0c;然后保存就…

硬件开发——UART/I2C/SPI协议

硬件开发——UART/I2C/SPI协议 小狼http://blog.csdn.net/xiaolangyangyang 1、UART 电压&#xff1a; TTL电平&#xff1a;1&#xff1a;&#xff08;3.3V~5V&#xff09;&#xff0c;0&#xff1a;&#xff08;0V&#xff09;RS232电平&#xff1a;1&#xff1a;&#xff0…

【C++题解】1212. 移动数组元素

问题&#xff1a;1212. 移动数组元素 类型&#xff1a;数组找数 题目描述&#xff1a; 在一个不重复的数组中&#xff0c;请将这个数组的最小数和数组第一个数交换&#xff0c;最大数和数组最后一个数交换。 输入&#xff1a; 第一行有一个整数 n ( 5≤n≤100 &#xff09;…

Windows 11登录密码遗忘后如何在登录

在现代社会中&#xff0c;随着信息技术的迅猛发展&#xff0c;计算机操作系统如Windows 11已经成为我们日常生活和工作中不可或缺的一部分。然而&#xff0c;有时我们可能会遇到忘记登录密码的尴尬情况。为了帮助大家解决这个问题&#xff0c;本文将详细讲解如何快速破解Window…

浅谈端到端(自动驾驶)

一、 引言 端到端是近期非常火的话题&#xff0c;尤其在自动驾驶、具身智能等领域。去年UniAD的发布&#xff0c;给大家普及了端到端的网络设计&#xff0c;带动了行业的发展。产业界&#xff0c;特斯拉FSD Beta V12效果惊艳&#xff0c;近期理想也推出了双系统的E2E自动驾驶系…

MySQL 分组函数

目录 1. 单/多行处理 2. 分组函数分类 3. 分组函数组合使用 4. 注意 1. 单/多行处理 分组函数又被叫做多行处理函数&#xff08;多个输入&#xff0c;一个输出&#xff09;&#xff1b; 前面提到的数据处理函数又叫做单行处理函数&#xff08;一个输入&#xff0c;一个输出…

<Qt> 信号和槽

目录 一、信号和槽概述 二、信号和槽的使用​​​​​​ &#xff08;一&#xff09;connect函数 &#xff08;二&#xff09;实现一个点击按钮关闭窗口的功能 &#xff08;三&#xff09;再谈connect 三、自定义槽函数 四、自定义信号 五、带参数的信号和槽 六、信号…

哈喽GPT-4o,程序员如何通过GPT-4o保护自己的合法权益

目录 一、法律研究Prompt&#xff1a;派遣合同和劳务外包合同有什么区别&#xff1f;详细说一下在被裁员时的区别&#xff1f; 二、法律条文检索Prompt&#xff1a;检索《劳动合同法》&#xff0c;以下情况属于第几条&#xff0c;如果公司进行技能考试&#xff0c;并以技能考试…

在Ubuntu上安装redis

Ubuntu上安装redis 一、通过下载redis的压缩包安装二、通过apt包管理器安装Redis三、修改redis的配置文件四、控制redis启动 Redis是一种开源的内存数据存储&#xff0c;可以用作数据库、缓存和消息代理等。本文将会介绍两种不同的安装方式&#xff0c;包括通过压缩包安装以及通…

Linux 性能优化:轻松入门

文章目录 前言一、磁盘性能优化1、 磁盘 RAID 模式选择2、文件系统优化 二、优化 CPU1、性能监控 &#xff1a;2、进程优先级调整 &#xff1a;3、进程与 CPU 绑定 &#xff1a; 三、优化内存四、网络性能优化1、调整 TCP 缓冲区大小2、修改系统级别的文件描述符的数量3、调整 …