Типы параметров функций в Python - PullRequest
226 голосов
/ 22 марта 2010

Если я не ошибаюсь, создание функции в Python работает следующим образом:

def my_func(param1, param2):
    # stuff

Однако вы не указываете типы этих параметров. Кроме того, если я помню, Python является строго типизированным языком, поэтому кажется, что Python не должен позволять вам передавать параметр другого типа, чем ожидал создатель функции. Однако как Python узнает, что пользователь функции передает нужные типы? Будет ли программа просто умирать, если это неправильный тип, предполагая, что функция действительно использует параметр? Вы должны указать тип?

Ответы [ 12 ]

1 голос
/ 22 марта 2010

В Python все имеет тип.Функция Python будет делать все, что от нее требуется, если тип аргументов ее поддерживает.

Пример: foo добавит все, что может быть __add__ ed;), не сильно заботясь о ее типе.Это означает, что во избежание неудачи вы должны предоставлять только те вещи, которые поддерживают сложение.

def foo(a,b):
    return a + b

class Bar(object):
    pass

class Zoo(object):
    def __add__(self, other):
        return 'zoom'

if __name__=='__main__':
    print foo(1, 2)
    print foo('james', 'bond')
    print foo(Zoo(), Zoo())
    print foo(Bar(), Bar()) # Should fail
0 голосов
/ 24 мая 2019

Чтобы эффективно использовать модуль ввода (новый в Python 3.5), включите все (*).

from typing import *

И вы будете готовы к использованию:

List, Tuple, Set, Map - for list, tuple, set and map respectively.
Iterable - useful for generators.
Any - when it could be anything.
Union - when it could be anything within a specified set of types, as opposed to Any.
Optional - when it might be None. Shorthand for Union[T, None].
TypeVar - used with generics.
Callable - used primarily for functions, but could be used for other callables.

ОднакоТем не менее, вы можете использовать имена типов, такие как int, list, dict, ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...