পাইথনের এমন কিছু বৈশিষ্ট্য কী যা এটিকে নিজস্ব ভাষা হিসাবে অনন্য করে তোলে? [বন্ধ]


12

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

আমি এখানে একটি নতুন, তাই স্বজ্ঞাত বিষয়গুলি ব্যাখ্যা করার প্রয়োজন হতে পারে .....


9
পাইথনটি অনন্য নয়, এতে কোনও একক অনন্য বৈশিষ্ট্য নেই যা অন্য কোনও ভাষায় দেখা যায় না।
এসকে-যুক্তি

10
আমি জানি এটিই একমাত্র ভাষা যা মন্টি পাইথনের নামানুসারে ...
ইয়ানিস

@ এসকে-যুক্তিযুক্ত প্রশ্নটি বৈশিষ্ট্য সম্পর্কে, যার বৈশিষ্ট্যগুলি একটি উপসেট। পাইথনের অনন্য কোন বৈশিষ্ট্য নেই?
কোজিরো

@ কোজিরো, আমি কখনই "চরিত্রগত" এর আনুষ্ঠানিক সংজ্ঞাটি দেখিনি, তাই আমি অনুমান করা পছন্দ করিনা।
এসকে-যুক্তি

1
@ কোজিরো, পিএল বৈশিষ্ট্যগুলি সাধারণত এর সিনট্যাক্স এবং শব্দার্থক উভয় হিসাবেই বোঝা যায়। এবং উভয়ই আনুষ্ঠানিকভাবে সংজ্ঞায়িত করা হয়।
এসকে-যুক্তি

উত্তর:


22

আপনার একদম অনন্য বৈশিষ্ট্যগুলি খুঁজে পেতে খুব কঠিন সময় আসবে । অস্তিত্বের বেশিরভাগ ভাষার বৈশিষ্ট্যগুলি শুরু থেকেই তাদের একাধিক ভাষায় গ্রহণ করা হয়েছে। কিছু কিছু বিরল হতে পারে, বেশিরভাগ কারণে তারা হয় নতুন এবং এখনও অস্পষ্টতার মধ্যে রয়েছে, বা ভাল কারণে মারা গিয়েছেন। তবুও, তারপরেও আপনি বৈশিষ্ট্যগুলির সংমিশ্রণের দিকে নজর দেওয়া ভাল।

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

  • মেটাক্লাসভিত্তিক ধাতব প্রোগ্রামিং । মূলত, শ্রেণি তৈরিতে সালিসী কোড চলছে। পুনরুদ্ধার প্রান্তে খুব অল্প কাজ সহ খুব সুন্দর শ্রেণীর কাস্টমাইজেশনের জন্য তৈরি করে - উদাহরণস্বরূপ কোনও অবজেক্ট-রিলেশনাল ম্যাপিং (ওআরএম) এর জন্য ক্লায়েন্ট ক্লাসগুলি স্বাভাবিকভাবে কয়েকটি অতিরিক্ত লাইন দিয়ে লেখা যায় এবং একটি টন কোড স্বয়ংক্রিয়ভাবে উত্পন্ন হয়। এই একটি উদাহরণ জ্যাঙ্গো এর "মডেল"attr = SomeDataType()
  • আপনি সব কিছুর জন্য পুনরাবৃত্তি ব্যবহার করতে উত্সাহিত হন । এটি বিশেষত 3.x এ স্পষ্ট, যেখানে একটি পুনরায়-ভিত্তিক সমতুল্য সহ বেশিরভাগ তালিকা-ভিত্তিক বিকল্পগুলি পরবর্তীকালের পক্ষে বাতিল করা হয়েছে। আইট্রেটারগুলি সংগ্রহের জন্য নিকট-সার্বজনীন ইন্টারফেস হিসাবেও পরিবেশন করে (উভয়ই আপনার মেমোরিতে রয়েছে এবং আপনার কেবলমাত্র একবারের প্রয়োজন এবং এটি নীচের বৈশিষ্ট্যগুলি সহ তৈরি করুন)। সংগ্রহ-অজানস্টিক, স্পেস-কার্যক্ষম ( O(1)মাঝারি ফলাফলের জন্য স্থানটি প্রায়শই প্রাকৃতিকভাবে অনুসরণ করে, খুব কম কাজগুলিতে মেমরির সমস্ত আইটেম একবারে প্রয়োজন হয়), সংযুক্তযোগ্য ডেটা ক্রাঞ্চিং কখনও সহজ ছিল না।
  • জেনারেটর এক্সপ্রেশন, উপরোক্ত সম্পর্কিত। অনেকে তালিকার বোধগম্যতার কথা শুনেছেন (প্রক্রিয়াটির মধ্যে আরও একটি পুনরাবৃত্তীয় থেকে ফিল্টারিং এবং ম্যাপিংয়ের তালিকা তৈরি করা, খুব সুবিধাজনক সিনট্যাক্স সহ)। তাদের সম্পর্কে ভুলে যান, তারা সিনট্যাকটিক চিনি, একটি বিশেষ ক্ষেত্রে। জেনারেটর এক্সপ্রেশনগুলি সিনট্যাক্টিক্যালি এবং চূড়ান্তভাবে আইটেমগুলির খুব একই ক্রমের ফলস্বরূপ খুব নিকটে থাকে তবে তারা অলসভাবে ফলাফল দেয় (এবং ফলস্বরূপ O(1)আপনি ফলাফলগুলি না রাখলে স্থান নিয়ে যায়)।
  • yieldযা মূলত লেখার পুনরাবৃত্তিকে (এখানে জেনারেটর বলা হয়) অনেক ভাল করে তোলে। তারা উপরের বড় ভাই, সব ধরণের নিয়ন্ত্রণ প্রবাহকে সমর্থন করে। সি # তে একই কিওয়ার্ড সহ কিছু মিল রয়েছে। তবে yieldসীমিত প্রকারের কর্টিনগুলিকে সমর্থন করার জন্য এটি ওভারলোডেড (উদাহরণস্বরূপ লুয়ায় আরও বিস্তৃত সমর্থন রয়েছে) যা তবুও কঠোর সমস্যায় কাজ করে চালাক লোকেরা তাদের ভাল ব্যবহারে ফেলেছে। আমার মাথার শীর্ষে দুটি উদাহরণ: ব্যাকট্র্যাসিংয়ের সাথে পুনরাবৃত্তীয় বংশদ্ভুত পার্সিং এবং কোনও স্ট্যাকের সীমা এবং অ্যাসিনক্রোনাস আই / ও (সুবিধাজনক সিনট্যাক্স সহ)।
  • মাল্টি-টার্গেট অ্যাসাইনমেন্ট এবং পুনরাবৃত্তযোগ্য আনপ্যাকিং। স্টেরয়েডস উপর অ্যাসাইনমেন্ট। কেবলমাত্র আপনি একবারে একাধিক মান নির্ধারণ করতে পারবেন না (এমনকি মানগুলি অদলবদল করার সময় এবং পুনরাবৃত্ত করার জন্যও for key, value in mapping.items()), আপনি পরিচিত দৈর্ঘ্যের কোনও পুনরাবৃত্ত (সত্যই, বেশিরভাগ টিউপস) একাধিক ভেরিয়েবলগুলিতে আনপ্যাক করতে পারেন। 3.x যেহেতু এটা যেমন আপনি কয়েক ভেরিয়েবল একক আইটেম এবং এক গ্রহণ যাই হোক না কেন রয়ে গ্রহণ নির্দিষ্ট করতে পারেন অজানা দৈর্ঘ্য সংগ্রহ এমনকি ব্যবহারিক আছে: first, *everything_in_between, last = values
  • বর্ণনাকারী , গুণাবলী অ্যাক্সেস কাস্টমাইজ করার বিভিন্ন উপায়ের মধ্যে সম্ভবত সবচেয়ে শক্তিশালী। বৈশিষ্ট্য রয়েছে (সি # তে, তবে বিশেষ ভাষার সমর্থন ছাড়াই), স্থির পদ্ধতি, শ্রেণিক পদ্ধতি ইত্যাদি সমস্ত বর্ণনাকারী হিসাবে প্রয়োগ করা হয়। তারা পাশাপাশি প্রথম শ্রেণীর বস্তু। মাত্র এক সপ্তাহ আগে, আমি বৈশিষ্ট্যগুলিতে পুনরাবৃত্তিশীল এবং কৌতুকপূর্ণ কোডের মুখোমুখি হয়েছি - তাই আমি একটি ছোট ফাংশন লিখেছি যা পুনরাবৃত্ত অংশটি তৈরি করে এবং এটি কোনও properyবস্তুতে গুটিয়ে রাখে ।
  • খাঁটি অফসাইড বিধি (সীমানাঙ্কিত ব্লকের জন্য ইনডেন্টিয়ন)। আমি ইচ্ছাকৃতভাবে এই শেষ করা। যদিও এটি পাইথনকে আলাদা করে তোলে, আপনি একবারে অভ্যস্ত হয়ে গেলে (বা কমপক্ষে এটি আমার অভিজ্ঞতা) একবারেই এটি প্রতিদিনের প্রোগ্রামিংয়ে সত্যই দাঁড়ায় না।

আমি এখনও রুবির কাছে কিছুটা নবীন কিন্তু আমার মনে হয় শেষ পয়েন্ট ছাড়াও সব কিছু হিট? যেভাবেই আমি সম্মত "অনন্য" সম্ভবত পাইথনে পাওয়া যাবে না তবে "অন্যান্য শীর্ষ ভাষার মধ্যে সাধারণ নয়" হতে পারে।
রিগ

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

ভাল, +1। আমার কাছে, "স্টেরয়েডগুলিতে অ্যাসাইনমেন্ট" আসলে "দরিদ্র মানুষের প্যাটার্ন ম্যাচিং", তবে এটি অবিশ্বাস্যরূপে কার্যকর তবে :) আমি আরও খেয়াল করেছিলাম যে ফাংশনগুলিতে প্যারামিটারটি কতটা নমনীয়: *argsএবং **kwargs, টিপলস এবং প্যারামিটারে ডিক্টস মানচিত্রের ব্যথাহীন উপায় ইত্যাদি etc ।
9000

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

3

আমি অনুমান করি যে একমাত্র জিনিসটি পাইথনকে অনন্য করে তোলে বৈশিষ্টগুলির বিশেষ মিশ্রণ এটি প্রকাশ করে। এটি বেশিরভাগ প্রোগ্রামিং ভাষার ক্ষেত্রে সত্য হবে।

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

তবে আমি পাইথনে খুব সাবলীল নই, সুতরাং এমন কিছু জিনিস থাকতে পারে যা আমি নিশ্চিতভাবে অনুপস্থিত!


@ ডেলানন: আহা, আমি "স্পষ্টতই একটি আনুষ্ঠানিক প্যারামিটার হিসাবে নিজেকে পাস" মিস করলাম .. অনুমান 2 সকাল বেলা পড়ার জন্য আমি এটাই পেয়েছি;)
ডেমিয়ান ব্রেচট

4
সুস্পষ্ট স্বটি ওবেরনেও ঘটে, fww
গ্রাসেল

একটি স্পষ্ট স্ব প্যারামিটার সাধারণ লিস্প অবজেক্ট সিস্টেমেও ব্যবহৃত হয়। সিএলওএস বহু-পদ্ধতি সরবরাহ করে, যার অর্থ স্ব-প্যারামিটার কোনওভাবেই বিশেষ নয়, যেমনটি অজগর।
জুলিউস

1

তাদের মালিকের সম্পত্তি হয়ে ওঠার জন্য ডকাস্ট্রিংয়ের স্বয়ংক্রিয় প্রক্রিয়াজাতকরণ। সাধারণভাবে পাইথনের সমস্ত উজ্জ্বল অন্তর্নির্ধারণ বৈশিষ্ট্য এটিকে একটি অনন্য ভাষা তৈরি করে, সাহায্য () ব্যবহারের ক্ষমতা থেকে শুরু করে __doc__কোনও অবজেক্টের প্রথম শ্রেণির সম্পত্তি হিসাবে ব্যবহার করার ক্ষমতা পর্যন্ত । উদাহরণ স্বরূপ:

>>> class DocStringException(Exception):
...     """Error message is the same as docstring"""
...     def __str__(self):
...         return repr(self.__doc__)
... 
>>> class ExampleException(DocStringException):
...     """An example happened"""
... 
>>> raise ExampleException
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
__main__.ExampleException: 'An example happened'

অন্যান্য দরকারী অন্তর্নির্ধারণ বৈশিষ্ট্য:

  • সহায়তা / সহায়তা () - কোন বস্তুর সাথে দোভাষী / সাহায্যে সহায়তা করুন
  • কীওয়ার্ডস - পাইথন কীওয়ার্ডস
  • স্থানীয় () - স্থানীয় নাম পান
  • গ্লোবাল () - বিশ্বব্যাপী নাম পান
  • dir () - কোনও সামগ্রীর বৈশিষ্ট্য এবং পদ্ধতিগুলি পান
  • .mro পদ্ধতি। , ইস্যুব্লক্লাস - উত্তরাধিকার বোঝা
  • id () - কোনও বস্তুর মেমরি ঠিকানা পান

কমন লিস্প, ক্লোজার এবং অন্যান্য অনেকগুলি, আমি বিশ্বাস করি গতিশীল ভাষাগুলির মতো রুবিতেও একই ক্ষমতা রয়েছে।
Torbjørn

@ তোর্ব্বার্ন কোন শক্তি? স্বয়ংক্রিয় ডকুমেন্টেশন, বা আত্মপরিচয় বৈশিষ্ট্য?
কোজিরো

আমি দুজনেই ভাবছিলাম। হুবহু বলাই নয়, আত্মায়। আমি বিশ্বাস করি না রুবির একই ডকুমেন্টেশন সক্ষমতা রয়েছে তবে নিশ্চিতভাবে আত্মবিজ্ঞাপন। সিএল এবং ক্লোজারের দুটি বৈশিষ্ট্যই রয়েছে - এবং আমি বিশ্বাস করি যে পাইথনে আপনি যা খুঁজে পাবেন তার চেয়েও অনেক বেশি আত্মবিশ্বাস চলে, কারণ এটি হোমসাইকোনিক
Torbjørn

1
  1. Generator Expressions
  2. input()আমাকে বোঝাতে দাও, আমি এমন একটি ভাষা দেখিনি (এখনও অবধি), যেখানে আপনি কোনও বিবৃতিতে কোনও মূল্য মুদ্রণ করতে পারেন যা কোনও কিছু মুদ্রণ করে, এটি রুবির মতো print/gets, তবে মুদ্রণের পরিবর্তে একটি মান সহ:print "Foo" bar = gets
  3. yield
  4. অনেক ধরণের ডেটাসেট: ordereddict, namedtuple, array, list, tuple, dictionary

জেনারেটর এক্সপ্রেশনগুলি তালিকা উপলব্ধি ব্যবহার করে হাস্কেলের মধ্যে প্রয়োগ করা যেতে পারে (হাস্কেল তালিকা অজগর, অজগর তালিকার বিপরীতে, সুতরাং এর জন্য কোনও নির্দিষ্ট বাক্য গঠন প্রয়োজন)। "ইনপুট" দ্বারা আমি ধরে নিয়েছি আপনি সেই নামের পাইথন 3 ফাংশনটি বোঝাচ্ছেন (পাইথন 2 ফাংশনটি বিপজ্জনক এবং ব্যবহার করা উচিত নয়)। এটি সত্য যে এটি আচরণের একটি অস্বাভাবিক সংমিশ্রণ (যদিও এটি জাভাস্ক্রিপ্টে উপস্থিত রয়েছে - উইন্ডো.প্রম্পট - এবং বেসিক, যেখানে আমি অনুমান করি যে পাইথন এটি থেকে ধার নিয়েছে) তবে এটি প্রোগ্রামার দ্বারা তুচ্ছভাবে প্রয়োগ করা যেতে পারে ("ইনপুট এস = putStrLn s >> getStrLn "এটি হ্যাশেলের জন্য করবে)।
জুলিউস

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

-2

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


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

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

-4

আমি বলব এটি স্টেটমেন্টের ব্যবহার যদি বিবৃতি এবং লুপগুলি আবদ্ধ থাকে lo অন্য কোনও ভাষায় তা দেখেনি।

আমি মনে করি এটি খুব সহজ কারণ এটি পাইথন কোডটি অবলম্বন করা আরও তাত্পর্যপূর্ণ করে তোলে!

এটি ফাংশন বাদে লাইন পদ্ধতিতে একটি ঝরঝরে লাইনে কার্যকর করা বলে মনে হয়, এবং এটি খুব সুন্দর যা ব্যাখ্যা করা যেতে পারে।


2
উইকিপিডিয়া এমন একটি ভাষা পূর্ণ স্ক্রিন জানে যা এটিও করে। একে অফ সাইড রুল বলে

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