write traductor traducir significa qué ingles gratis frases español diccionario convertidor buscar python python-3.x python-3.5 type-hinting

python - traducir - traductor de frases en ingles a español gratis



Cómo especificar el tipo de retorno "anulable" con sugerencias de tipo (1)

Supongamos que tengo una función:

def get_some_date(some_argument: int=None) -> %datetime_or_None%: if some_argument is not None and some_argument == 1: return datetime.utcnow() else: return None

¿Cómo especifico el tipo de retorno para algo que puede ser None ?


Estás buscando Optional .

Como su tipo de devolución puede ser datetime (tal como se devuelve desde datetime.utcnow() ) o None , debe usar Optional[datetime] :

from typing import Optional def get_some_date(some_argument: int=None) -> Optional[datetime]: # as defined

De la documentación sobre mecanografía, Optional es la abreviatura de:

Optional[X] es equivalente a Union[X, None] .

donde Union[X, Y] significa un valor de tipo X o Y

Si desea ser explícito debido a preocupaciones de que otros puedan tropezar con Optional y no darse cuenta de su significado, siempre puede usar Union :

from typing import Union def get_some_date(some_argument: int=None) -> Union[datetime, None]:

Pero dudo que sea una buena idea, Optional es un nombre indicativo y ahorra un par de pulsaciones de teclas.

Como se señaló en los comentarios de @ Michael0x2a Union[T, None] se transforma a Union[T, type(None)] por lo que no es necesario utilizar el type aquí.

Visualmente, estos pueden diferir pero programáticamente, en ambos casos, el resultado es exactamente el mismo ; Union[datetime.datetime, NoneType] será el tipo almacenado en get_some_date.__annotations__ * :

>>> from typing import get_type_hints >>> print(get_type_hints(get_some_date)) {''return'': typing.Union[datetime.datetime, NoneType], ''some_argument'': typing.Union[int, NoneType]}

* Use typing.get_type_hints para tomar el atributo __annotations__ los objetos en lugar de acceder a él directamente.