python - পাইথনের ব্যবহার
পাইথনে টাইপ ইঙ্গিত সহ ডিফল্ট প্যারামিটার মান যুক্ত করা হচ্ছে (2)
আপনার দ্বিতীয় উপায়টি সঠিক।
def foo(opts: dict = {}):
pass
print(foo.__annotations__)
এই ফলাফল
{'opts': <class 'dict'>}
এটি সত্য যে এটি পিইপি 484 এ তালিকাভুক্ত নয়, তবে টাইপ ইঙ্গিতগুলি ফাংশন টীকাগুলির একটি অ্যাপ্লিকেশন, যা পিইপি 3107 নথিভুক্ত । সিনট্যাক্স বিভাগটি পরিষ্কার করে দেয় যে কীওয়ার্ড আর্গুমেন্টগুলি এইভাবে ফাংশন টীকাতে কাজ করে।
আমি পরিবর্তনীয় কীওয়ার্ড আর্গুমেন্ট ব্যবহারের বিরুদ্ধে দৃ strongly়ভাবে পরামর্শ দিচ্ছি। আরও তথ্য here ।
আমার যদি এর মতো কোনও ফাংশন থাকে:
def foo(name, opts={}):
pass
এবং আমি পরামিতিগুলিতে প্রকারের ইঙ্গিতগুলি যুক্ত করতে চাই, আমি এটি কীভাবে করব? আমি যেভাবে ধরে নিয়েছিলাম তা আমাকে একটি সিনট্যাক্স ত্রুটি দেয়:
def foo(name: str, opts={}: dict) -> str:
pass
নিম্নলিখিতটি একটি সিনট্যাক্স ত্রুটি ফেলে না তবে এই কেসটি হ্যান্ডেল করার স্বজ্ঞাত উপায় বলে মনে হয় না:
def foo(name: str, opts: dict={}) -> str:
pass
typing
ডকুমেন্টেশনে
বা গুগল অনুসন্ধানে আমি কিছুই খুঁজে পাচ্ছি না।
সম্পাদনা: পাইথনে ডিফল্ট যুক্তিগুলি কীভাবে কাজ করেছিল তা আমি জানতাম না, তবে এই প্রশ্নের খাতিরে আমি উদাহরণগুলি উপরে রাখব। সাধারণভাবে নিম্নলিখিতগুলি করা আরও ভাল:
def foo(name: str, opts: dict=None) -> str:
if not opts:
opts={}
pass
আপনি যদি
টাইপিং
ব্যবহার করছেন (পাইথন
typing.Optional
প্রবর্তিত) আপনি
টাইপিং
ব্যবহার করতে পারেন
typing.Optional
, যেখানে
typing.Optional
Optional[X]
Union[X, None]
সমতুল্য।
এটির সিগন্যাল করতে ব্যবহৃত হয় যে কোনওটির সুস্পষ্ট মান অনুমোদিত নয়।
typing.Optional
থেকে
typing.Optional
:
def foo(arg: Optional[int] = None) -> None:
...