Указать в функции, что аргументов является список с элементами определенного типа данных

Рейтинг: 0Ответов: 2Опубликовано: 22.02.2023

Я знаю, что я могу указать в питоне, что аргумент является списком, вот так:

def func(arg: list)

Но что, если я должен получать список только с целыми числами? Могу ли я как-то сделать это? Может быть это можно сделать, используя массивы numpy?

Ответы

▲ 1Принят

Вы можете использовать аннотацию типов для указания типа элементов, которые должны присутствовать в списке. Следующий код определяет функцию, которая принимает список с целочисленными элементами:

import typing

def func(arg: typing.List[int]) -> None:
    pass
▲ 0

Добавлю, что начиная с Python3.9 можно писать так (т. е. без typing.List, а просто с list):

def func(arg: list[int]) -> None:
    pass

А если нужно несколько типов, то так:

  • Начиная с Python3.10:

    def func(arg: list[int | float]) -> None:
        pass
    
  • Начиная с Python3.9:

    from typing import Union
    
    def func(arg: list[Union[int, float]]) -> None:
        pass
    
  • До Python3.9:

    from typing import List, Union
    
    def func(arg: List[Union[int, float]]) -> None:
        pass