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:
    ...






type-hinting