Python a bool
veya a dönebilir bir işlevi var list
. Tür ipuçlarını kullanarak dönüş türlerini belirtmenin bir yolu var mı?
Örneğin, bunu yapmanın doğru yolu var mı?
def foo(id) -> list or bool:
...
Python a bool
veya a dönebilir bir işlevi var list
. Tür ipuçlarını kullanarak dönüş türlerini belirtmenin bir yolu var mı?
Örneğin, bunu yapmanın doğru yolu var mı?
def foo(id) -> list or bool:
...
Yanıtlar:
Gönderen dokümantasyon
sınıf
typing.Union
Birlik türü; Birlik [X, Y], X veya Y anlamına gelir.
Dolayısıyla, birden fazla geri dönüş veri türünü temsil etmenin uygun yolu
from typing import Union
def foo(client_id: str) -> Union[list,bool]
Ancak yazmanın zorunlu olmadığını unutmayın. Python, dinamik olarak yazılmış bir dil olarak kalmaya devam eder. Ek açıklama sözdizimi, üretime geçmeden önce kodun geliştirilmesi sırasında yardımcı olmak için geliştirilmiştir. PEP 484'ün belirttiği gibi, "çalışma zamanında hiçbir tür denetimi gerçekleşmez".
>>> def foo(a:str) -> list:
... return("Works")
...
>>> foo(1)
'Works'
Gördüğünüz gibi bir int değeri geçiyorum ve bir str döndürüyorum. Ancak, __annotations__
ilgili değerlere ayarlanır.
>>> foo.__annotations__
{'return': <class 'list'>, 'a': <class 'str'>}
Tip ipuçları hakkında daha fazla bilgi için lütfen PEP 483'ü inceleyin . Ayrıca bkz . Python 3.5'te Tip ipuçları nelerdir ?
Lütfen bunun sadece Python 3.5 ve üstü için geçerli olduğunu unutmayın . Bu, PEP 484'te açıkça belirtilmektedir .
Değerlendirildiğinde ifade def foo(client_id: str) -> list or bool:
eşdeğerdir
def foo(client_id: str) -> list:
ve bu nedenle istediğinizi yapmaz.
Yerli yolu "ya A veya B" tipi ipucu açıklamak için Birlik (Bhargav Rao sayesinde):
def foo(client_id: str) -> Union[list, bool]:
Ben "Neden yine de yapmak istiyorsun" adam olmak istemiyorum, ama belki 2 dönüş türlerine sahip olmak istediğiniz şey değildir:
Bir tür özel hata durumunu belirtmek için bir bool döndürmek istiyorsanız, bunun yerine İstisnalar'ı kullanmayı düşünün. Bir bool'u özel bir değer olarak döndürmek isterseniz, boş bir liste iyi bir temsil olabilir. Ayrıca bununla None
birlikte iade edilebileceğini de belirtebilirsiniz.Optional[list]
Herhangi birinin buraya "birden çok dönüş değeri türü nasıl belirtilir?" Tuple[type_value1, ..., type_valueN]
from typing import Tuple
def f() -> Tuple[dict, str]:
a = {1: 2}
b = "hello"
return a, b
Daha fazla bilgi: https://code-examples.net/en/q/2651e60