首页 > 编程问答 >相同类型的多个参数的类型提示?

相同类型的多个参数的类型提示?

时间:2024-07-31 06:46:18浏览次数:9  
标签:python python-typing

除了:

def foobar(a: int, b: int, c: int, d: str): ...

也许有类似:

def foobar([a, b, c]: int, d: str): ...

显然是概念性的,但可以减少重复类型提示的方法之外,还有另一种方法可以输入相同类型的提示参数


Python 中没有像建议的那样直接将多个参数分组到单个类型提示中的方法。但是,可以使用以下方法来提高代码的可读性和效率:

1. *args 和类型提示:

如果有多个相同类型的参数, args 是一个不错的选择。可以对 args 元组使用类型提示:

```python from typing import List

def foobar(*args: int, d: str): for arg in args: print(arg + 1) print(d) ``` 这允许传递任意数量的整数作为参数。

2. 使用类型别名:

如果的参数列表很长,并且想要提高可读性,可以为重复的类型创建类型别名:

```python from typing import List

IntList = List[int]

def foobar(a: IntList, d: str): # ... ``` 这并不能减少代码量,但可以使的代码更易于理解。

3. 数据类 (对于更复杂的情况):

如果有许多具有相同类型的参数,或者希望将这些参数视为一个组,则可以使用数据类:

```python from dataclasses import dataclass

@dataclass class Numbers: a: int b: int c: int

def foobar(numbers: Numbers, d: str): # ... `` 这使可以将相关值分组在一起,并通过 numbers.a numbers.b` 等方式访问它们。

需要记住的是: 虽然 Python 没有提供直接的方法来实现所描述的语法,但上述方法可以帮助实现类似的结果,并提高代码的可读性和可维护性。选择最适合特定情况的方法。

标签:python,python-typing
From: 59687854

相关文章

  • 如何在Python中平滑相邻的多边形?
    我正在寻找一种平滑多边形的方法,以便相邻/接触的多边形保持接触。单个多边形可以轻松平滑,例如使用PAEK或Bezier插值(https://pro.arcgis.com/en/pro-app/latest/tool-reference/cartography/smooth-polygon.htm),这自然会改变它们的边界边缘。但是如何平滑所有多边形......
  • Python多处理池不启动多个进程
    我正在尝试使用多处理池来创建多个进程。我有一个工作函数dummy_proc定义如下:importrefrommultiprocessingimportPooldefregex_check(input_string):#Patterntomatchboth"pm_lat"and"pm_lon_coslat"followedbytwofloatspattern=r"(c......
  • 迟滞建模作为 Python GEKKO 中 MPC 的控制约束
    我试图使用PythonGEKKO在用于控制信号调度的MPC优化问题中引入滞后约束。这已成为一项艰巨的任务,因为我无法将以下问题转换为GEKKO理解的方程。问题:如果开启时间<最短开启时间,则给定资产的控制调度不应将其关闭。如果关闭时间<最小关闭时间......
  • 在 Lambda Python 中获取 errorMessage": "期望值: 第 1 行第 1 列 (char 0)"
    我正在尝试使用slackapi和awslambda函数创建一个slack机器人。现在我只希望每当用户说“你好”时它就响应“你好”。当我在Lambda代码编辑器中测试代码时,出现此错误。我对Lambda很陌生,并且已经被困在这个问题上有一段时间了。非常感谢任何帮助!完整错误:Response......
  • 具有 Python lambda 函数的 QTimer 使用先前的数据运行
    我有一个GUI项目,它使用PySide2和Python3.8,它在QThread中执行一些后台任务。在该QThread中,我有QTimer成员对象,该对象必须定期运行一个函数,每次向其传递不同的数据。我没有使用QTimer.singleShot静态函数,因为如果需要某些特定场景,我需要......
  • 我如何在 python 上使用 spire.pdf 修复此错误
    我使用spirepdf,但出现以下错误:“DllNotFound_Windows,libSkiaSharp,Nosepuedeencontrarelmóduloespecificado.:....”defextract_text_from_pdf(file_path,output_file):#LoadaPDFdocumentdoc=PdfDocument()doc.LoadFromFile(file_path)ex......
  • C++ 函数返回极其缓慢,远慢于功能等效的 python 代码
    我有一个在我编写的脚本中使用的函数,用于从列表中删除多余的阻塞关键字。基本上,输入(以任何顺序):{"apple","bapple","banana","cherry","bananaman","sweetherrypie","sweet","b"}它应该输出一个缩小的字符串数组(以任何顺序):......
  • 在预定时间从 python telegram bot 发起对话
    对于没有提供代码,我提前表示歉意。我明天会尝试添加它,但我现在还没有接近它,思考如何解决这个问题让我一直在思考。我已经为一个机器人创建了一个程序,该程序的数据帧充满了之前请求的用户添加到机器人的消息列表中。现在,机器人使用job_queue在一天中的随机时间向每个用户发......
  • python函数:带星号的参数一个接一个
    我想知道为什么定义以下函数被认为是好的。deffoo(*x,y):pass据我所知,现在有调用此函数的方法,因为它总是缺少y的值。(如果我错了,请纠正我。)这有什么我不知道的用处吗?你说得对,在Python中定义一个像deffoo(*x,y):...这样的函数,在试图以常规方......
  • 基于遗传(GA)、粒子群(PSO)、模拟退火(SA)、禁忌搜索(ST)、蚁群算法(ACO)、自自组织神
        ......