অজগরটিতে আমার একটি ফাংশন রয়েছে যা হয় হয় bool
বা একটি ফেরত দিতে পারে list
। টাইপ ইঙ্গিতগুলি ব্যবহার করে ফেরতের ধরণগুলি নির্দিষ্ট করার কোনও উপায় আছে কি?
উদাহরণস্বরূপ, এটি করার সঠিক উপায় কি এটি?
def foo(id) -> list or bool:
...
অজগরটিতে আমার একটি ফাংশন রয়েছে যা হয় হয় bool
বা একটি ফেরত দিতে পারে list
। টাইপ ইঙ্গিতগুলি ব্যবহার করে ফেরতের ধরণগুলি নির্দিষ্ট করার কোনও উপায় আছে কি?
উদাহরণস্বরূপ, এটি করার সঠিক উপায় কি এটি?
def foo(id) -> list or bool:
...
উত্তর:
ডকুমেন্টেশন থেকে
শ্রেণী
typing.Union
ইউনিয়নের ধরণ; ইউনিয়ন [এক্স, ওয়াই] অর্থ এক্স বা ওয়াই হয় either
সুতরাং একাধিক রিটার্ন ডেটা প্রকার উপস্থাপনের সঠিক উপায় is
from typing import Union
def foo(client_id: str) -> Union[list,bool]
তবে লক্ষ করুন যে টাইপিং প্রয়োগ করা হয় না। পাইথন গতিশীল টাইপযুক্ত ভাষা অবিরত রয়েছে। প্রযোজনায় প্রকাশের আগে কোডটির বিকাশকালে সহায়তার জন্য টিকাশ বাক্সটি তৈরি করা হয়েছে। পিইপি 484-তে বলা হয়েছে, "রানটাইমের সময় কোনও ধরণের চেকিং হয় না।"
>>> def foo(a:str) -> list:
... return("Works")
...
>>> foo(1)
'Works'
আপনি দেখতে পাচ্ছেন যে আমি একটি মান মান পাস করছি এবং একটি স্ট্রিং ফিরিয়ে দিচ্ছি। তবে __annotations__
স্ব স্ব মানগুলিতে সেট করা হবে।
>>> foo.__annotations__
{'return': <class 'list'>, 'a': <class 'str'>}
পিইপি 483 মাধ্যমে যানটাইপ ইঙ্গিত সম্পর্কে আরও জানতে । পাইথন 3.5 তে টাইপ ইঙ্গিতগুলি কী কী তা দেখুন ?
দয়া করে নোট করুন যে এটি কেবল পাইথন 3.5 এবং তারপরের দিকে উপলব্ধ। পিইপি 484 এ এটি স্পষ্টভাবে উল্লেখ করা হয়েছে ।
বিবৃতি def foo(client_id: str) -> list or bool:
মূল্যায়ন যখন সমতুল্য
def foo(client_id: str) -> list:
এবং তাই আপনি যা চান তা করতে পারে না।
"এ বা বি" প্রকারের ইঙ্গিতটি বর্ণনা করার আদি উপায় ইউনিয়ন (ভরগভ রাওকে ধন্যবাদ):
def foo(client_id: str) -> Union[list, bool]:
আমি "আপনি যেভাবে যাইহোক এটি করতে চান" লোক হতে চাই না, তবে 2 রিটার্ন টাইপ থাকা আপনি যা চান তা তা নয়:
আপনি যদি কিছু ধরণের বিশেষ ত্রুটি-কেস নির্দেশ করতে কোনও বিল ফিরিয়ে দিতে চান তবে পরিবর্তে ব্যতিক্রমগুলি বিবেচনা করুন। আপনি যদি কোনও বিশেষ মান হিসাবে কোনও বুল ফিরিয়ে দিতে চান তবে খালি তালিকাটি একটি ভাল উপস্থাপনা হতে পারে। আপনি এটি None
দিয়ে ফিরে আসতে পারে তাও নির্দেশ করতে পারেনOptional[list]
যদি কেউ এখানে "একাধিক ফেরতের মানগুলি কীভাবে নির্দিষ্ট করতে চান?" অনুসন্ধানে সন্ধানে অবতরণ করেন তবে, ব্যবহার করুন Tuple[type_value1, ..., type_valueN]
from typing import Tuple
def f() -> Tuple[dict, str]:
a = {1: 2}
b = "hello"
return a, b
আরও তথ্য: https://code-example.net/en/q/2651e60