tgoop.com/lython/61
Create:
Last Update:
Last Update:
Type Hinting in Python- part 2
✓ اما برای تایپ هینت انواع دادهی دیگر مثل list
, set
و dict
ها و ... خواهیم داشت:
x: list[int] = [1]
x: set[int] = {6, 7}
x: dict[str, float] = {"num": 2.0}
x: tuple[str, float] = ("yes", 7.5)
✓ نکته: برای دیکشنری درون آکولاد تایپ key و value دیکشنری با str و float مشخص شده است. یعنی دیکشنری که در x ریخته میشود باید از این قانون تبعیت کند تا
mypy
اررور برنگرداند.✓ دقت شود که کد بالا برای پایتون 3.9 به بعد است و برای نسخههای قبل از آن از کد زیر استفاده میشود که موارد زیر ابتدا باید از ماژول
typing
ایمپورت شوند.from typing import List, Set, Dict, Tuple
x: List[int] = [1]
x: Set[int] = {6, 7}
x: Dict[str, float] = {"field": 2.0}
x: Tuple[int, str, float] = (3, "yes", 7.5)
✓ قابل ذکر است که تایپ هینت متدها در یک کلاس، به شکل توابع تعریف میگردد که قبلا توضیح داده شد.
✓ به کد زیر دقت کنید که مفهوم تایپ هینت
Any
را میرساند. Any
به معنای هر توع تایپی در نظر گرفته میشود. در واقع اگر هیچ تایپی برای متغیری تعریف نگردد، برای آن Any
لحاظ میگردد. برای مثال میتوان به متغیر x لیست، دیکشنری کلاس تابع و یا هر ورودی دیگری داد. دو تابع زیر که تعریف شده در واقع از نظر mypy
یکی است.from typing import Any
def func1(x):
pass
def func2(x: Any):
pass
✓ اما به نظر بخش جالب ماجرا در تایپ هینت Callable است. این تایپ برای وقتی مفید است که ورودی یک تابع، یک یا چند تابع دیگر است. آنوقت میتوان توع ورودی را بوسیلهی Callable با mypy چک کرد.
سینتکس آن به شکل زیر است.
Callable[[arg1, arg2, ...], return type]
برای مثال در کد زیر دو تابع تعریف شده و به عنوان ورودی به تابع سوم داده خواهد شد.
def func1(a: int, b: str) -> None:
pass
def func2(results: Any) -> None:
pass
def func3(d: Callable[[int, str], None], c: Callable[[Any], None]) -> None:
pass
@lython
BY روزمرگی های یک برنامه نویس
Share with your friend now:
tgoop.com/lython/61