আমি কীভাবে কার্যকরভাবে পাইথোনিক কোড লিখতে শিখতে পারি?


46

"পাইথোনিক" এর জন্য গুগল অনুসন্ধান করা বিস্তৃত ব্যাখ্যার প্রকাশ করে। উইকিপিডিয়া পৃষ্ঠা বলেছেন:

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

এটি "অপার্থিব" শব্দটিও আলোচনা করে:

বিপরীতে, অপিপথোনিক কোডের একটি চিহ্ন হ'ল এটি পাইথনে সি ++ (বা লিস্প, পার্ল বা জাভা) কোড লেখার চেষ্টা করে is অর্থাৎ, অন্য ভাষা থেকে ফর্মগুলির একটি অহংকারিক অনুবাদ না করে রুক্ষ প্রতিলিপি সরবরাহ করে। পাইথনিসিটির ধারণাটি পাইথনের নূন্যতম দর্শনের পাঠযোগ্যতার সাথে দৃly়ভাবে আবদ্ধ এবং "এটি করার একাধিক উপায় আছে" এপ্রোচটি এড়িয়ে যাওয়া। অপঠনযোগ্য কোড বা বোধগম্য আইডিয়ামগুলি অযৌক্তিক।

"পাইথোনিক" শব্দটির অর্থ কী? বাস্তবে কার্যকরভাবে প্রয়োগ করতে আমি কীভাবে শিখব?


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

@ আমেন এত সত্য। আসলে আমি মনে করি যে সমস্ত সম্প্রদায়ের উইকির সাথে অবশ্যই ভাষার আইডিয়মগুলি শিখতে হবে - সমস্ত ভাষার জন্য - হ'ল বিবেচনা করা উচিত।
ইয়াতী সাগাদ


1
মন্তব্যকারীরা : দয়া করে অপ্রাসঙ্গিক মন্তব্য পোস্ট করা বন্ধ করুন; এগুলি একটি কারণে মুছে ফেলা হয়েছে। আপনার যদি উত্তর থাকে তবে উত্তর হিসাবে ছেড়ে দিন। আপনি যদি এই প্রশ্নের বিষয় নিয়ে আলোচনা করতে চান তবে চ্যাটটি ব্যবহার করুন

1
পাইথন অনুশীলন করে!
ডায়নামিক

উত্তর:


22

আমি খুঁজে পেয়েছি যে "পাইথোনিক" হওয়ার অর্থ কী, তার বেশিরভাগ লোকের নিজস্ব ব্যাখ্যা রয়েছে। উইকিপিডিয়া থেকে:

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

বিপরীতে, অপিপথোনিক কোডের একটি চিহ্ন হ'ল এটি পাইথনে সি ++ (বা লিস্প, পার্ল বা জাভা) কোড লেখার চেষ্টা করে is অর্থাৎ, অন্য ভাষা থেকে ফর্মগুলির একটি অহংকারিক অনুবাদ না করে রুক্ষ প্রতিলিপি সরবরাহ করে। পাইথনিসিটির ধারণাটি পাইথনের নূন্যতম দর্শনের পাঠযোগ্যতার সাথে দৃly়ভাবে আবদ্ধ এবং "এটি করার একাধিক উপায় আছে" এপ্রোচটি এড়িয়ে যাওয়া। অপঠনযোগ্য কোড বা বোধগম্য আইডিয়ামগুলি অযৌক্তিক।

আমি দেখেছি যে, এর থেকে বেশি না গুণ, আরো "pythonic" উদাহরণ আসলে পাইথন বাগধারার সঙ্গে চালাক হতে চেষ্টা মানুষের কাছ থেকে এবং (আবার, না চেয়ে বেশি বার) তাদের কোড কার্যত অপাঠ্য (যা রেন্ডারিং উদ্ভূত হয় না Pythonic)।

যতক্ষণ আপনি পাইথনের আইডিয়মগুলিতে আঁকছেন এবং পাইথনে সি ++ (বা অন্য ভাষা) শৈলী ব্যবহার করার চেষ্টা এড়িয়ে যাচ্ছেন, ততক্ষণ আপনি পাইথোনিক হচ্ছেন।

WorldEngineer দ্বারা নির্দেশিত হিসাবে, PEP8 অনুসরণ করার জন্য একটি ভাল মান (এবং যদি আপনি ভিআইএম ব্যবহার করেন তবে PEP8 আবরণের জন্য প্লাগইন উপলব্ধ রয়েছে)।


সত্যিই যদিও, দিনের শেষে, যদি আপনার সমাধানটি কাজ করে এবং একেবারে মারাত্মকভাবে অ-রক্ষণাবেক্ষণযোগ্য এবং ধীর না হয় তবে কে যত্ন করে? না হওয়ার চেয়েও বেশি বার, আপনার কাজটি কোনও কাজ শেষ করা, সর্বাধিক মার্জিত, পাইথোনিক কোড না লিখে।


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


2
একটি দুর্দান্ত উত্তরের জন্য +1 (আমি ওপিতে এটি যেহেতু উদ্ধৃত করেছি) বাদে)।

উঃ .. কোটা পোস্ট করার আগে ওপিএ পুনরায় পড়ুন: পি
ডেমিয়ান ব্রেচট

3
বরং, অহং এবং অনলাইনে সক্রিয় থাকার মধ্যে যে কোনও সম্প্রদায়ের মতামত প্রকাশের মধ্যে একটি উচ্চ সম্পর্ক রয়েছে । মূলত আপনি অ-অহংকারী লোকদের এতটা দেখতে পান না কারণ তারা এতটা প্রথম দিকে লেখেন না।
ইসরান্দি

17

পাইথোনিকটি অজগরভাবে কোডিং করতে পাইথনে। এর অর্থ কাঠামোগত ব্যবহার এবং বিন্যাসকরণ যা পাইথনের জন্য প্রোগ্রামিং স্ট্যান্ডপয়েন্ট থেকে তবে একটি সম্প্রদায় পাঠের দৃষ্টিকোণ থেকে ভাল কাজ করে। এটি অনেকটা কীভাবে কে অ্যান্ডআর দীর্ঘ সময়ের জন্য সি প্রোগ্রামিং শৈলীর মান সেট করে। এই গাইডটি দেখায় যে আপনাকে পাইথনে আইডেমিক্যালি কোড করতে হবে। পিইপি 8 সেই নির্দেশিকায় উল্লেখ করা হয়েছে যাতে এটি সম্ভবত পড়া উচিত worth


1
@ ম্যাটফেনউইক যদিও প্রোগ্রামিং সম্পর্কে প্রায় 90% নয়? ভাল প্রোগ্রামাররা কোড পড়ার জন্য প্রচুর সময় ব্যয় করে এবং কোন সময় থেকে যায়, প্রচুর কোড লিখুন। আপনি যত বেশি পাইথোনিক কোড পড়বেন এবং পাইথনে আপনি যত বেশি লিখবেন, ততই আপনার কোডটি পাইথোনিক হবে। আমি মনে করি না এখানে কোনও শর্টকাট আছে।
ক্রিস হার্পার

2
দুর্দান্ত লিঙ্ক!
ইথান ফুরম্যান

13

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

x, y = 7, 'fuhrer'

এটা খুব পাইথোনিক। আমার মনে আছে যখন আমি কেবল পাইথনের কয়েক মাস পরে C # শিখতে শুরু করি,

int x, y = 10, z;

একরকম আমাকে বিভ্রান্ত করেছে, তবে আমার সি / সি ++ শিকড়গুলিতে ফিরে আসতে আমার এক মিনিট সময় লেগেছে।

আর একটি পাইথোনিক উপায়ে ল্যাম্বডাস ব্যবহার করা হচ্ছে।

l = [1, 2, 3, 4, 5]
print(sorted(l, key=lambda x: -x))

প্রকৃতপক্ষে lক্রমবর্ধমান ক্রম অনুসারে বাছাই করা হবে ।

তারপরে খুব বেশি ব্যবহৃত হয়, তবে খুব কম বোঝা যায় "হাঁসের টাইপিং" - এটি হাঁসের মতো হাঁটে এবং কথা বললে, আপনি এটিকে হাঁসের মতো বিবেচনা করুন। এটি অন্যান্য ওও ভাষাগুলির ইন্টারফেসের সাথে আলতোভাবে সম্পর্কিত।

প্রয়োগযোগ্য যেখানে কার্যকরী প্রোগ্রামিং পদ্ধতি ব্যবহার করা যেমন মানচিত্রের ব্যবহার এবং হ্রাসকে পাইথোনিক হিসাবে বিবেচনা করা হয়।

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


আমি টাইপ করার সময় লিঙ্কটি ইতিমধ্যে পোস্ট করা হওয়ায় এটি অন্তর্ভুক্ত করিনি - WorldEngineer এর উত্তর :) আপনার এবং অন্যের ভালোর জন্য ভাষা বৈশিষ্ট্যগুলি কেবল "শোষণ" করার কথা ভাবেন, এবং আপনি পথে পাইথোনিক পাবেন, এবং দয়া করে অনুসরণ করুন সেই লিঙ্কটি
ইয়াতী সাগাদ

4
আসলে, অনেক বিতর্ক যে map, reduce, lambdaএবং এই ধরনের কথ্য কোনটাই হয়। তালিকা বোধগম্য এবং জেনারেটর এক্সপ্রেশন একটি বিকল্প এবং অনেক যখনই যুক্তিসঙ্গতভাবে সম্ভব তাদের পছন্দ করে (বিশেষত, যখনই আপনার কোনও ল্যাম্বডা দরকার হয় তখন তারা কম শব্দ করেন)। অবশ্যই তাদের ব্যবহারগুলি রয়েছে, এবং অন্যান্য আইডিয়ামগুলিতে ক্রিয়ামূলক প্রোগ্রামিং শো রয়েছে (উদাহরণস্বরূপ সজ্জিত)।

@ ডেলান রাজি হয়েছিলেন - এবং আরও অনেক কিছু পাইথন 3 এর কথা এলে উপসংহারটি হ'ল প্রয়োজনীয় বৈশিষ্ট্যগুলি যথাযথভাবে ব্যবহার করা উচিত । এবং এটি (এটি করার একমাত্র সুস্পষ্ট
উপায়ই হ'ল প্রতিমা

ব্যক্তিগতভাবে, আমি আপনার প্রথম উদাহরণের জন্য মানুষের পছন্দগুলি কখনই বুঝতে পারি নি। এই পর্যন্ত মানসিকভাবে বিশ্লেষণ করতে সহজ হয় (যা হয় Python- র জেন, কোড আরো প্রায়ই তুলনায় এটি লেখা হয় পড়া হয়): (x, y) = (7, 'fuhrer')- এখনো আমি প্রায় সর্বদা "সংশোধিত" করছি যে বাম বন্ধনী ছাড়া সবচেয়ে ভালো উপায় লিখতে হয়!
ইজকাটা

2
আমি তর্ক করব যে আপনার নির্দিষ্ট বাছাইয়ের উদাহরণটি পাইথোনিক নয়। আপনি যদি পারেন ঠিক এমন একটি ল্যাম্বদার সাথে কেন পুনরায় পুনর্নির্মাণ করতে পারেন print(sorted(l, reverse=True))যা অতিরিক্তভাবে স্পষ্টভাবে পাঠককে কী ঘটছে তা বলে দেয়। আমি আপনার প্রথম উদাহরণটি বিতর্কিতও খুঁজে পাব। এটি দুটি অ্যাসাইনমেন্ট একটিতে সংকুচিত; এটা ঠিক আছে, তবে আমি একে খুব পাইথোনিক বলব না। দু'টি অ্যাসাইনমেন্টের তুলনায় পাঠকরা এটি কী করে সেটির দিকে আরও দীর্ঘ তাকাতে হবে।
ফ্রেসনেল

7
--> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

পাইথোনিক কোডটি হ'ল:

  • সুপাঠ্য
  • সহজ (যতটা সম্ভব সহজ, তবে সহজ নয়)
  • ভাল চিন্তা

1
+1 টি। পাইথনের জেনটি আইডিয়ামগুলির তালিকা অনুসরণের চেয়ে পাইথোনিক কোড লেখার জন্য আরও গুরুত্বপূর্ণ; পরবর্তীকালে সমস্ত পরিস্থিতিতে আবশ্যক না।
ডোভাল

6

যে কোনও সময় আমি একটি নতুন ভাষা শেখার চেষ্টা করেছি, আমি খুঁজে পেয়েছি যে লোকেরা তাদের হাতের পিছনের মতো ভাষা জানে, অদ্ভুত দেখাচ্ছে এমন কোনও বিষয় সম্পর্কে জিজ্ঞাসা করছে / জিজ্ঞাসা করছে এবং তারপরে তাদের স্টাইলটি অনুকরণ করার চেষ্টা করছে করণীয় সেরা। উদাহরণ:

পাইথনে, যেহেতু আমরা বিষয়টিতে রয়েছি, ডাইভ ইন্টু পাইথন থেকে উদাহরণগুলি পেয়েছি এটি শুরু করার জন্য অবিশ্বাস্যভাবে কার্যকর। তারা কেবল পাইথনের বেসিক বিষয়গুলিই শিখিয়েছে না, তবে সত্যিকারের মূর্তিমানিক পাইথনের উপর জোর দেয় ।

ডি শেখার সময়, যেহেতু ডকুমেন্টেশনগুলি সেই সময়টি দুর্দান্ত ছিল না কারণ ভাষাটি এত রক্তক্ষরণ ছিল তাই আমি স্ট্যান্ডার্ড লাইব্রেরিতে কোডটি পড়ে বিশেষত আন্দ্রেই আলেকজান্দ্রেস্কুর কয়েকটি মাস্টারপিস শিখেছি ।

সি ++ শিখার সময় আমি বেশ ভাল সি ++ প্রোগ্রামারের কাছ থেকে একটি কোডবেস উত্তরাধিকার সূত্রে পেয়েছি এবং এসডিএল কনটেইনারগুলি রেফারেন্স ইত্যাদির মাধ্যমে পাস করার জেদ থেকে আইডিয়োমেটিক সি ++ প্রোগ্রামিং সম্পর্কে অনেক কিছু শিখেছি etc.

সমস্ত ভাষায়, আমি দেখতে পেয়েছি যে ভাষা সম্পর্কে স্ট্যাকওভারফ্লো প্রশ্নগুলি ব্রাউজ করা এবং লোকেরা সাধারণত মৌলিক জিনিসগুলি সম্পাদন করতে কী সাহায্য করে তা সন্ধান করে।


+1 একবার আপনি কোনও ভাষার বুনিয়াদি জানতে পারবেন, পাঠের কোড বই পড়ার চেয়ে অনেক বেশি সহায়তা করবে।
পেস

3

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


2

কেউ প্যারাফ্রেজকে বলেছিলেন, পাইথোনিক কী তা শিখতে কেবল কিছু কোড বের করে দিন। আমি এর সাথে একমত নই। আপনি যদি খুব ঘন কোডটি লিখতে চান তবে এটি এটিকে বেশি পাইথোনিক করে না।

পাইথোনিক কী তা নির্ধারণ করতে আপনার নিজের সহায়তার একটি উপায়, আপনার নিজের থেকে জিজ্ঞাসা করুন "আমি কেন (মানে আপনি) পাইথন ভাষাটি ব্যবহার করবেন?" এটি সম্পর্কে আপনাকে কী আবেদন করে?

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

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

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

স্পষ্টত ধরণের কাস্টিংয়ের পরিবর্তে হাঁসের টাইপিংয়ের অনুমতি দিয়ে সোর্স কোড সিনট্যাক্সকে সহজ করে এবং কোডাররা আপনার কোডটি "ভাল আচরণ করা কোডার হওয়া উচিত" এর প্রত্যাশার ফলে আমিও "পাইথোনিক" বলি এমন কিছু বাড়ে

সুতরাং পাইথোনিক কিসের দুটি দিক রয়েছে। একটি সিনট্যাক্টিকাল, অন্যটি অনুশীলন। "পাইথোনিক" কী এর গভীরতর দিকটি কীভাবে ব্যাখ্যা করবেন ..?

পাইথনে এটি করা কোনও বড় বিষয় নয়: alist = ['one', 'two', 'three \ n'] alist.append ((1234, 'Atuple'))

এবং টিপলটি বস্তুর ধরণের কোনও উদ্বেগ ছাড়াই তালিকায় যুক্ত হবে। পাইথোনিক অংশটি এমন নয় যে আপনি এটি করতে পারেন, তবে আপনার কোডটি এই ব্যর্থ হওয়া উচিত এবং ঠিক কাজ / মানিয়ে নেওয়া উচিত।

-লিস্ট-অবজেক্টে যা কিছু কাজ করে সে সম্পর্কে এই ধারণাটি লেখা উচিত যে অন্য কোনও কোডার আসতে পারে এবং তালিকায় একটি নন-স্ট্রিং যুক্ত করতে পারে এবং নতুন কোডার দ্বারা উত্স কোডের অভিযোজন করা কঠিন হওয়া উচিত নয়। সর্বোপরি ডাকটাইপের সুবিধা এটি।


-2

একটি প্রস্তাবিত বই কিনুন। এটি পড়ুন। এটি আপনার ভাষা ব্যবহারের একটি ভাল ভিত্তি এবং এমন একটি ব্যবস্থায় দেওয়া উচিত যা সম্প্রদায়ের শৈলীর সাথে মিলিত হয়

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.