উত্তর:
আপনি খুঁজছেন Optional।
যেহেতু আপনার রিটার্নের ধরনটি datetime(যেমন প্রত্যাবর্তিত হয়েছে datetime.utcnow()) হতে পারে বা Noneআপনার ব্যবহার করা উচিত Optional[datetime]:
from typing import Optional
def get_some_date(some_argument: int=None) -> Optional[datetime]:
# as defined
টাইপিংয়ের ডকুমেন্টেশন থেকে Optionalশর্টহ্যান্ড:
Optional[X]সমতূল্যUnion[X, None]।
যেখানে Union[X, Y]ধরণের মান Xবা এর অর্থ Y।
অন্যরা যদি হোঁচট খায় Optionalএবং এর অর্থ বুঝতে না পারে এমন উদ্বেগের কারণে আপনি যদি সুস্পষ্ট হতে চান তবে আপনি সর্বদা ব্যবহার করতে পারেন Union:
from typing import Union
def get_some_date(some_argument: int=None) -> Union[datetime, None]:
তবে আমি সন্দেহ করি এটি একটি ভাল ধারণা, Optionalএকটি সূচক নাম এবং এটি কয়েকটা কীস্ট্রোক সংরক্ষণ করে।
@ মাইকেল0 Union[T, None]x2a এর মন্তব্যে যেমন উল্লেখ করা হয়েছে তেমন ট্রান্সফর্ম হয়েছে Union[T, type(None)]যাতে typeএখানে ব্যবহারের দরকার নেই।
দৃশ্যত এগুলি পৃথক হতে পারে তবে ক্রমগতভাবে, উভয় ক্ষেত্রেই ফলাফলটি একই রকম হয় ; * এUnion[datetime.datetime, NoneType] সঞ্চিত ধরণ হবে :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]}
*typing.get_type_hints অবজেক্টের __annotations__বৈশিষ্ট্যটি সরাসরি অ্যাক্সেস না করে দখল করতে ব্যবহার করুন ।
Optional[T]টাইপ কার্যকরী প্রোগ্রামিং কমিউনিটি সুপরিচিত হয়। পাঠক কেবল এটির অর্থ বুঝতে পারবেন না Union[T, None], তবে ব্যবহারের ধরণটিও স্বীকার করবেন যে কোনও অর্থবহ উত্তর না থাকলে ত্রুটি রয়েছে, বা ফলাফলটি পাওয়া যায়নি তবে ফাংশনটি কোনওটিই ফিরিয়ে আনবে না।
Union[datetime, type(None)]করতে পারেনUnion[datetime, None]- পিইপি 484 অনুসারে ,Noneকোনও প্রকার টীকাতে ব্যবহার করে সর্বদা সমতুল্য হিসাবে বিবেচিত হয়type(None)। (typingডকুমেন্টেশনটিNoneবেশিরভাগ ক্ষেত্রে ব্যবহার করে তবে এখানে তা নয়, যা একটি তদারকি)।