পাইথনে ফাংশন মন্তব্য করার উপযুক্ত উপায় কী?


174

পাইথনে ফাংশন মন্তব্য করার কোনও স্বীকৃত উপায় কি আছে? নিম্নলিখিত গ্রহণযোগ্য?

#########################################################
# Create a new user
#########################################################
def add(self):

উত্তর:


318

এটি করার সঠিক উপায় হ'ল একটি ডকাস্ট্রিং সরবরাহ করা। এইভাবে, help(add)আপনার মন্তব্য থুতু হবে।

def add(self):
    """Create a new user.
    Line 2 of comment...
    And so on... 
    """

মন্তব্যটি খুলতে এটি তিনটি ডাবল উক্তি এবং এটি শেষ করতে আরও তিনটি ডাবল উদ্ধৃতি। আপনি যে কোনও বৈধ পাইথন স্ট্রিং ব্যবহার করতে পারেন। এটি মাল্টিলাইন হওয়ার প্রয়োজন নেই এবং ডাবল উদ্ধৃতিগুলি একক উদ্ধৃতি দ্বারা প্রতিস্থাপন করা যেতে পারে।

দেখুন: পিইপি 257


10
দ্রষ্টব্য যে এটি ট্রিপল-কোটেড হবে না; কোন স্ট্রিং আক্ষরিক কাজ করবে। তবে আপনি একাধিক স্ট্রিংয়ে আরও তথ্য রাখতে পারেন।
ইগনাসিও ওয়াজকেজ-আব্রামগুলি

5
যদিও কনভেনশন নির্দেশ দেয় যে এটি ট্রিপল-কোটেড হওয়া উচিত। আমি এমন কোনও ডাস্ট্রিং দেখিনি যা ছিল না।
চিন্ময় কাঞ্চি

2
যা বলতে রাজি হয় না তা নয়। সেগুলি ট্রিপল কোট করা উচিত, তবে আপনি বুনো কিছুতে দেখতে পাবেন না।
jcdyer

7
ডকাস্ট্রিংটি খুলতে এবং বন্ধ করতে আপনি তিনটি একক-কোট (তিনটি ডাবল-কোটের চেয়ে) ব্যবহার করতে পারেন।
ক্রেগ ম্যাককুইন

আপনারও কি মন্তব্যটি যুক্ত করা উচিত নয়?
জোকি

25

অন্যরা ইতিমধ্যে লিখেছেন যেমন একটি ডকস্ট্রিং ব্যবহার করুন।

এমনকি আপনি আরও এক ধাপ এগিয়ে যেতে পারেন এবং আপনার ডকাস্ট্রিংয়ে একটি ডক্টেস্ট যুক্ত করতে পারেন, যাতে আপনার ফাংশনগুলির স্বয়ংক্রিয় পরীক্ষাকে স্ন্যাপ করে।


3
লিঙ্কযুক্ত পৃষ্ঠায় অনুসরণ না করে এই উত্তরটি বেশ দুর্বল।
xaxxon

18

একটি ডাস্ট্রিং ব্যবহার করুন :

একটি স্ট্রিং আক্ষরিক যা মডিউল, ফাংশন, শ্রেণি বা পদ্ধতির সংজ্ঞায় প্রথম বিবৃতি হিসাবে ঘটে। এই জাতীয় একটি ডাস্ট্রিংই __doc__সেই বস্তুর বিশেষ বৈশিষ্ট্য হয়ে ওঠে ।

সমস্ত মডিউলগুলিতে সাধারণত ডকস্ট্রিং থাকতে হবে এবং মডিউল দ্বারা রফতানি হওয়া সমস্ত ফাংশন এবং ক্লাসেও ডকাস্ট্রিং থাকতে হবে। পাবলিক পদ্ধতিতে ( __init__কনস্ট্রাক্টর সহ ) ডকাস্ট্রিংগুলি থাকা উচিত। __init__.pyপ্যাকেজ ডিরেক্টরিতে ফাইলের মডিউল ডাস্ট্রিংয়ে একটি প্যাকেজ নথিভুক্ত হতে পারে ।

পাইথন কোডের অন্য কোথাও স্ট্রিং লিটারেলগুলি ডকুমেন্টেশন হিসাবেও কাজ করতে পারে। এগুলি পাইথন বাইটকোড সংকলক দ্বারা স্বীকৃত নয় এবং রানটাইম অবজেক্ট অ্যাট্রিবিউট (যেমন বরাদ্দ করা হয়নি __doc__) হিসাবে অ্যাক্সেসযোগ্য নয় , তবে সফ্টওয়্যার সরঞ্জাম দ্বারা দুটি ধরণের অতিরিক্ত ডকাস্ট্রিংগুলি বের করা যেতে পারে:

  1. মডিউল, শ্রেণি বা __init__পদ্ধতির শীর্ষ স্তরে একটি সরল কার্যভারের পরে অবিলম্বে স্ট্রিং লিটারেলগুলি ঘটে তাকে "অ্যাট্রিবিউট ডকাস্ট্রিংস" বলা হয়।
  2. স্ট্রিং লিটারেলগুলি অন্য একটি ডকস্ট্রিংয়ের সাথে সাথেই ঘটে বলে তাকে "অতিরিক্ত ডকস্ট্রিংস" বলা হয়।

অ্যাট্রিবিউট এবং অতিরিক্ত ডকাস্ট্রিংয়ের বিশদ বিবরণের জন্য দয়া করে পিইপি 258 , "ডকুমেন্টস ডিজাইন স্পেসিফিকেশন" [2] দেখুন ...


10

ভাল মন্তব্যের নীতিগুলি মোটামুটি বিষয়গত, তবে এখানে কয়েকটি গাইডলাইন রয়েছে:

  • ফাংশন মন্তব্যে কোনও ক্রিয়াকলাপের উদ্দেশ্যটি বর্ণনা করা উচিত , বাস্তবায়ন নয়
  • সিস্টেম স্টেট সম্পর্কিত আপনার ফাংশন যে কোনও অনুমানের রূপরেখা তৈরি করে। যদি এটি কোনও গ্লোবাল ভেরিয়েবল (টিএসএস, টিএসকি) ব্যবহার করে তবে সেগুলি তালিকাভুক্ত করুন।
  • অতিরিক্ত ASCII শিল্পের জন্য নজর রাখুন । দীর্ঘমেয়াদী হ্যাশ থাকা মন্তব্যগুলি পড়তে সহজ করে মনে হতে পারে, তবে মন্তব্যগুলি পরিবর্তিত হলে তারা মোকাবেলা করতে বিরক্তিকর হতে পারে comments
  • 'অটো ডকুমেন্টেশন' সরবরাহকারী ভাষার বৈশিষ্ট্যগুলির অর্থ গ্রহণ করুন, অর্থ্যাৎ পাইথনে ডকাস্ট্রিংস, পার্লে পিওডি এবং জাভাতে জাভাদোক

7
এ সম্পর্কে বিষয়গত কিছুই নেই, পাইথন ডকস্ট্রিং মন্তব্য ব্যবহার সম্পর্কে খুব স্পষ্ট।

@ ফাজি ললিপপ, আমি মন্তব্যটির প্রশংসা করি, তবে আপনি নোট করবেন যে আমার শেষ পয়েন্টটি সেই সঠিক পয়েন্টটি করেছে। সম্ভবত ওপি-র প্রশ্নটি কেবল পাইথনে মন্তব্য করার মেকানিক্স সম্পর্কে, তবে আমি মনে করি না যে আমার উত্তর হ্রাস-ভোটদানের
দাবী করে

7

আপনার পাইথন কোডে ডকাস্ট্রিং ব্যবহার সম্পর্কে পড়ুন ।

পাইথন ডকস্ট্রিং কনভেনশন অনুসারে :

কোনও ক্রিয়াকলাপ বা পদ্ধতির জন্য ডক্ট্রাস্টিংয়ের সাথে তার আচরণটি সংক্ষিপ্ত করে এবং তার যুক্তিগুলি, রিটার্নের মান (গুলি), পার্শ্ব প্রতিক্রিয়াগুলি, উত্থাপিত ব্যতিক্রমগুলি, এবং কখন এটি ডাকা যেতে পারে তার উপর বিধিনিষেধগুলি নথিভুক্ত করা উচিত (প্রযোজ্য সমস্ত ক্ষেত্রে)। .চ্ছিক যুক্তি নির্দেশ করা উচিত। কীওয়ার্ড আর্গুমেন্টগুলি ইন্টারফেসের অংশ কিনা তা নথিভুক্ত করা উচিত।

কোনও সুবর্ণ নিয়ম থাকবে না, বরং এমন মন্তব্য প্রদান করুন যা আপনার দলের অন্য বিকাশকারীদের কিছু বোঝায় (যদি আপনার একটি থাকে) বা এমনকি আপনি নিজে যখন ছয় মাস রাস্তায় ফিরে আসেন তখন নিজের কাছে।


5

আমি একটি ডকুমেন্টেশন অনুশীলনের জন্য যাব যা স্পিঞ্জের মতো একটি ডকুমেন্টেশন সরঞ্জামের সাথে সংহত করে ।

প্রথম পদক্ষেপটি হ'ল docstring:

def add(self):
 """ Method which adds stuff
 """

2

আমি কেবল "ডক্টস্ট্রিং ব্যবহার করুন" বলার চেয়ে আরও এক ধাপ এগিয়ে যাব। একটি ডকুমেন্টেশন জেনারেশন সরঞ্জাম বাছাই করুন, যেমন পাইডোক বা ইপিডোক (পাইপার্সিংয়ে আমি ইপিডোক ব্যবহার করি), এবং সেই সরঞ্জামটির দ্বারা চিহ্নিত চিহ্নিতআপ সিনট্যাক্সটি ব্যবহার করুন। আপনার ডকুমেন্টেশনের গর্তগুলি সনাক্ত করতে আপনি যখন আপনার বিকাশ করছেন তখন প্রায়শই সেই সরঞ্জামটি চালান। প্রকৃতপক্ষে, আপনি এমনকি ক্লাস প্রয়োগের আগে কোনও শ্রেণীর সদস্যদের জন্য ডক্টাস্টিংগুলি লিখে উপকৃত হতে পারেন ।


2

ডকাস্ট্রিং ব্যবহার করুন ।

ফাংশন বর্ণনা মন্তব্যের জন্য পাইচার্মে এটি অন্তর্নির্মিত প্রস্তাবিত কনভেনশন :

def test_function(p1, p2, p3):
    """
    my function does blah blah blah

    :param p1: 
    :param p2: 
    :param p3: 
    :return: 
    """

(যুক্ত করার পরে def) এটিকে অভিযুক্ত করা উচিত নয় ? (একটি অলৌকিক প্রশ্ন নয়।)
পিটার মর্টেনসেন

0

যদিও আমি সম্মত হই যে এটি কোনও মন্তব্য হওয়া উচিত নয়, তবে বেশিরভাগ (সমস্ত?) উত্তরগুলির মতো ডক্টস্ট্রিংয়ের পরামর্শ অনুসারে, আমি নিমপিডক (একটি ডক্টরসিং স্টাইল গাইড) যুক্ত করতে চাই

আপনি যদি এটি এটি করেন তবে আপনি (1) স্বয়ংক্রিয়ভাবে ডকুমেন্টেশন তৈরি করতে পারেন এবং (2) লোকেরা এটি সনাক্ত করতে পারে এবং আপনার কোডটি পড়ার জন্য আরও সহজ সময় থাকতে পারে।


0

এটি করতে আপনি তিনটি উদ্ধৃতি ব্যবহার করতে পারেন।

আপনি একক উদ্ধৃতি ব্যবহার করতে পারেন:

def myfunction(para1,para2):
  '''
  The stuff inside the function
  '''

বা ডাবল উদ্ধৃতি:

def myfunction(para1,para2):
  """
  The stuff inside the function
  """
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.