पाइथन

सामान्य प्रयोजन प्रोग्रामिंग भाषा
(पाइथन प्रोग्रामिंग से अनुप्रेषित)

पाइथन (Python) सामान्य कार्यों के लिए उपयुक्त उच्च स्तरीय प्रोग्रामिंग भाषा (General Purpose and High Level Programming language), इन्टरैक्टिव, ऑब्जेक्ट ओरिएन्टेड, स्क्रिप्टिंग भाषा है। इस भाषा को इस तरह से डिजाइन किया गया है ताकि इसमें लिखे गए कोड आसानी से पढ़े और समझे जा सकें।

पाइथन (Python)
पाइथन का प्रतीकचिह्न (लोगो)
प्रकार multi-paradigm: ऑब्जेक्ट-ओरिएंटेड, imperative, functional, procedural, reflective
पहला अवतरण 1991
डिज़ाइनर Guido van Rossum
निर्माता Python Software Foundation
स्थायी विमोचन 3.12.4 /
2024-06-06; 6 महीने पूर्व
2.7.2 /
2011-06-11; 13 वर्ष पूर्व
प्रस्तुतिपूर्व विमोचन 3.3.0a1 /
2012-3-5; 12 वर्ष पूर्व[1]
लिखने का तरिका duck, dynamic, strong
उपयोग CPython, IronPython, Jython, Python for S60, PyPy
भाषिका Cython, RPython, Stackless Python
प्रभावकर्ता ABC,[2] ALGOL 68,[3] सी,[4] सी++,[5] Dylan,[6] हैस्कल,[7] Icon,[8] Java,[9] Lisp,[उद्धरण चाहिए] Modula-3,[5] पर्ल
प्रभावित Boo, Cobra, D, Falcon, Groovy, जावास्क्रिप्ट, Ruby[10]
प्रचालन तन्त्र Cross-platform
अनुज्ञप्‍तिधारी Python Software Foundation License
सामान्य संचिका नाम अनुयोजन .py, .pyw, .pyc, .pyo, .pyd
वेबसाइट python.org
Wikibooks logo विकिपुस्तक पर Python Programming

अन्य प्रोग्रामिंग भाषाओं के विपरीत, जिनमें कोड-ब्लॉक्स को दर्शाने के लिए मझोले कोष्ठक ( {} ) का इस्तेमाल किया जाता है, पाइथन में कोड-ब्लॉक्स को दर्शाने के लिए ह्वाइट स्पेस (white space) का प्रयोग किया जाता है। इस प्रोग्रामिंग भाषा को Guido van Rossum ने 1991 में बनाया था। यह वस्तुतः एक प्रोग्रामिंग लिपि है जिसमें प्रोग्राम चलाने के लिए कोड को कंपाईल, यानि पूर्व-संयोजित करने की जरूरत नहीं है। पायथन "वाक्य रचना के साथ बहुत स्पष्ट उल्लेखनीय शक्ति" का दावा करती है। और उसकी मानक लाइब्रेरी (standard library) बड़ी और व्यापक है।

इस भाषा की डिजाइन-दर्शन में कूट-पठनीयता (code readability) पर जोर दिया गया है। पाइथन का दावा है कि इसका सिन्टैक्स बहुत स्पष्ट है; इसकी मानक लाइब्रेरी विशाल और सर्वसमाहित (comprehensive) है। कई लिनक्स सिस्टमों के साथ पाइथन प्रायः जुड़ा हुआ (pre-installed) आता है।

अन्य गतिशील भाषाओं की तरह, पायथन अक्सर एक स्क्रिप्टिंग भाषा के रूप में प्रयोग किया जाता है, लेकिन कभी कभी गैर स्क्रीप्टिंग संदर्भों की एक विस्तृत शृंखला में भी प्रयोग किया जाता है। कुछ उपकरणों का उपयोग करके, पायथन कोड स्वसंपूर्ण निष्पादन योग्य प्रोग्राम (इक्सक्युटेबल प्रोग्राम) के रूप में पैक किया जा सकता है। पायथन इन्टरप्रेटर कई ऑपरेटिंग सिस्टम के लिए उपलब्ध हैं।

पाइथन 1980 के दशक के अन्तिम वर्षों डिजाइन की गयी थी। इसके कार्यान्वयन दिसंबर 1989 में शुरू हुआ।

पाइथन 3.0 एक लंबी अवधि के बाद 3 दिसंबर 2008 को जारी किया गया था। यह पाइथन 2.x से कम्पेटिबल नहीं था।

जनवरी 1, 2018 से पाइथन 2.7 को 'रिटायर' घोषित कर दिया गया और इसे अब मेन्टेन नहीं किया जाता है।

विशेषताएं

संपादित करें
 
पाइथन के लिए अब अनेकों IDE भी उपलब्ध हैं। यह IDLE है।

१) सरल : पाइथन एक सरल भाषा है। एक अच्छा पाइथन प्रोग्राम पढ़ने पर लगभग अंग्रेजी पढ़ने जैसा लगता है (लेकिन बहुत सख्त अंग्रेजी !)। पाइथन की यह छद्म-कोड-प्रकृति इसकी सबसे बड़ी शक्तियों में से एक है।

२) सीखने में आसान : जैसा कि आप देखेंगे , पाइथन सीखने की दृष्टि से बहुत आसान है। अन्य उच्च-स्तरीय, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे जावा या सी ++ की तुलना में पायथन सीखना आसान है, लेकिन इसमें कुछ उन्नत अवधारणाएँ हैं जो कोड विकसित करते समय काम आती हैं जो मजबूत, कुरकुरा, अत्यधिक अनुकूलित, कुशल और कुशल है। सामान्यीकृत। अपने कोड में इन अवधारणाओं का उपयोग करके, आप अपने कोड में बग्स को कम करने के साथ-साथ इसकी दक्षता में वृद्धि करने में सक्षम होंगे जिससे आप एक अनुभवी पायथन प्रोग्रामर बनेंगे।[1]

३) स्वतंत्र और मुक्तस्रोत : पाइथन एक फ्लॉस (फ्री / मुफ्त और ओपन सोर्स सॉफ्टवेयर ) का एक उदाहरण है।

४) उच्च स्तर की भाषा :

५) पोर्टेबल: अपने मुक्त-स्रोत प्रकृति के कारण, पाइथन कई प्लेटफार्मों पर उपलब्ध है। आप लिनक्स, विंडोज , लबादा , सोलारिस, ओएस / 2, Amiga , AROS , के रूप में / 400, BeOS , ओएस / 390 , z / ओएस, पाम ओएस, QNX , वीएमएस , पर पाइथन का उपयोग कर सकते हैं।

६) इन्टरप्रीट की जाने वाली भाषा: सी या सी++ आदि जिस तरह कम्पाइल की जातीं हैं, पाइथन उस तरह कम्पाइल नहीं की जाती, बल्कि पायथन इन्टरप्रेटर के द्वारा कम्पाइल की जाती हैं। यह इन्टरप्रीटेड भाषा है।

७) उद्देश्योन्मुख (ऑब्जेक्ट ओरिएन्टेड): पाइथन प्रक्रिया-उन्मुख प्रोग्रामिंग के साथ ही ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग का समर्थन करता है।

८) एक्सटेंसिबल: यदि आप चाहते हैं कि किसी प्रोग्राम का एक भाग बहुत तेजी से चलने वाला हो, तो आप उस भाग को सी में लिख कर इस लक्ष्य को हासिल कर सकते हैं।

९) व्यापक लाइब्रेरी : पाइथन का मानक लाइब्रेरी वास्तव में बहुत बड़ी है। यह इसकी बहुत बड़ी शक्ति है।

१०) एमबेड्डेबल (embeddable)

लाइब्रेरी

संपादित करें

पाइथन की मानक लाइब्रेरी बहुत विशाल है और इसे पाइथन की सबसे बड़ी शक्ति के रूप में देखा जाता है। यह लाइब्रेरी अनेकों तरह के कार्यों के लिए उपयुक्त है। इसमें ग्राफिकल यूजर इन्टरफेस (GUI) बनाने के लिए मॉड्यूल है, रिलेशनल डेटाबेस से डेटा आदान-प्रदान के लिए मॉड्यूल है, अंकगणित तथा आर्बिट्रेरी प्रिसीजन डेसिमल के लिए मॉड्यूल है, रेगुलर इक्सप्रेशन के लिए मॉड्यूल है तथा यूनिट टेस्टिंग के लिए मॉड्यूल है।

मार्च २०१८ में, पाइथन पैकेज इन्डेक्स (PyPI, अन्य पार्टियों द्वारा निर्मित पाइथन सॉफ्टवेयर की आधिकारिक कोश) में १३०,००० पैकेज हैं। इनमें से कुछ प्रमुख ये हैं-

  • Graphical user interfaces
  • Web frameworks
  • Multimedia
  • Databases
  • Networking
  • Test frameworks
  • Automation
  • Web scraping[93]
  • Documentation
  • System administration
  • Scientific computing
  • Text processing
  • Image processing
  • Symbolic Maths

विभिन्न रूप

संपादित करें
  • CPython - पाइथन का मूल रूप (reference implementation) है। यह C में लिखा गया है। यह पाइथन को बाइटकोड में बदलता है जिसको इसका वर्चुअल मशीन रन करता है। सीपाइथन के साथ एक विशाल मानक लाइब्रेरी आती है जिसे सी और पाइथन में लिखा गया है। यह विण्डोज सहित यूनिक्स-के-तरह के अन्य प्लेटफार्मों के लिए उपलब्ध है।
अन्य रूप
  • PyPy तेज गति से चलने वाला पाइथन 2.7 और 3.5 का इन्टरप्रीटर है। इसमें 'जस्ट-इन-टाइम कम्पाइलर' है जिसके कारण कोड की गति सीपाइथन की अपेक्षा बहुत तेज हो जाती है।
  • Stackless Python - massively concurrent programs के लिए बहुत उपयुक्त

भाषा की कुछ विशेषताएँ

संपादित करें
 
आरक्षित शब्द (रिजर्व्ड वर्ड्स)

पाइथन 2.5.2 में निम्नलिखित 31 शब्द आरक्षित हैं-

and        del        from        not        while
as         elif       global      or         with
assert     else       if          pass       yield
break      except     import      print
class      exec       in          raise
continue   finally    is          return
def        for        lambda      try
टाइपिंग (Typing)
पाइथन ३ के अन्तःनिर्मित (built-in) टाइप
Type mutable वर्णन सिन्टैक्स का उदाहरणा
bool immutable Boolean value True
False
bytearray mutable Sequence of bytes bytearray(b'Some ASCII')
bytearray(b"Some ASCII")
bytearray([119, 105, 107, 105])
bytes immutable Sequence of bytes b'Some ASCII'
b"Some ASCII"
bytes([119, 105, 107, 105])
complex immutable Complex number with real and imaginary parts 3+2.7j
dict mutable Associative array (or dictionary) of key and value pairs; can contain mixed types (keys and values), keys must be a hashable type {'key1': 1.0, 3: False}
ellipsis An ellipsis placeholder to be used as an index in NumPy arrays ...
float immutable Floating point number, system-defined precision 3.1415927
frozenset immutable Unordered set, contains no duplicates; can contain mixed types, if hashable frozenset([4.0, 'string', True])
int immutable Integer of unlimited magnitude[11] 42
list mutable List, can contain mixed types [4.0, 'string', True]
set mutable Unordered set, contains no duplicates; can contain mixed types, if hashable {4.0, 'string', True}
str immutable A character string: sequence of Unicode codepoints 'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines"""
tuple immutable Can contain mixed types (4.0, 'string', True)


इन्टरैक्टिव मोड पाइथन का एक छोटा सा कोड
>>> 1 + 1
2
>>> a = range(10)
>>> print( list(a) )
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


सी और पाइथन में फैक्टोरियल की गणना करने वाले फंक्शनों की तुलना
सी में फैक्टोरियल पाइथन में फैक्टोरियल
int factorial(int x)
{
    if (x < 0 || x % 1 != 0) {
        printf("संख्या x, शून्य (0) के बराबर या उससे बड़ा पूर्णांक होना चाहिए।");
        return -1; //Error    
    }
    if (x == 0) {
        return 1;
    }
    return x * factorial(x - 1);
}
def factorial(x):
    assert x >= 0 and x % 1 == 0, "संख्या x, शून्य (0) के बराबर या उससे बड़ा पूर्णांक होना चाहिए।"
    if x == 0:
        return 1
    else:
        return x * factorial(x - 1)

पाइथन के लिए उपयोगी कुछ अनुप्रयोग

संपादित करें
  • LiberMate -- मैटलैब के कोड को पाइथन में बदलने के लिए
  • Oct2Py-- पाइथन में ग्नू ऑक्टेव/मैटलैब के फंक्शनों को सीधे चलाने के लिए। इसके लिए पाइथन, ग्नू ऑक्टेव/मैटलैब प्रोग्राम को चलाता है और वहाँ से प्राप्त परिणामों को पाइथन में ले आता है।
  • PyInstaller , Py2exe -- पाइथन की स्क्रिप्ट को exe प्रोग्राम में बदल देते हैं जिससे वे बिना किसी दूसरे प्रोग्राम के सहारे स्वतः चलाए जा सकते हैं।
  • Cython, LibPython, Nuikta, PyPy -- पाइथन को सी या सी++ में बदलने के लिए। इस प्रकार से प्राप्त कोड को कम्पाइल करके चलाने पर वह मूल पाइथन प्रोग्राम की अपेक्षा कई गुना तेज गति से चलता है।
  • Numba -- अनाकोण्डा द्वारा प्रायोजित पाइथन का मुक्त स्रोत ऑप्टिमाइजिंग कम्पाइलर

पाइथन 2.x तथा पाइथन 3.x में अन्तर

संपादित करें
  • दोनों की लाइब्रेरियाँ अलग-अलग हैं और कभी-कभी एक-दूसरे में नहीं चलतीं।
  • पाइथन ३ में यूनिकोड का बेहतर सपोर्ट उपलब्ध कराया गया है। पाइथन २ में डिफाल्ट स्ट्रिंग टाइप आस्की है जबकि पाइथन में डिफाल्ट स्ट्रिंग टाइप यूनिकोड है।
  • पाइथन ३ में पूर्णांक भाजन बेहतर बनाया गया है।
  • दोनों संस्करणों में प्रिन्ट स्टेटमेन्ट अलग-अलग हैं।
पाइथन २ : raw_input()
पाइथन ३ : input().
  • पाइथन 2.x में मौजूद xrange() पाइथन ३ में मौजूद नहीं है।
  • दोनों संस्करणों में गलती बताने (एरर-हैण्डिलिंग) में मामूली सा परिवर्तन किया गया है।

ऐसा कोड जो पाइथन 2.x और पाइथन 3.x दोनों में समान आउटपुट दे

संपादित करें

__future__ का उपयोग करके पाइथन २ के कोड से पाइथन ३ जैसा आउटपुट लिया जा सकता है। अर्थात वह कोड दोनों पाइथन में चलेगा और समान आउटपुट देगा।

from __future__ import division
print 7 / 5
print -7 / 5
आउटपुट
1.4
-1.4

पाइथन का उपयोग करने वाले अनुप्रयोग/कंपनियाँ

संपादित करें

१) कोरल

२) डी- लिंक

३) ईव -ऑनलाइन

४) गेमिंग

५) हैकिंग

६) MMORPG

७) हनीवेल

८) एचपी

९) औद्योगिक प्रकाश और संगीत

१०) फिलिप्स

११) यूनाइटेड अंतरिक्ष गठबंधन

  1. "Python 3.3.0 Release". Python Software Foundation. 5 मार्च 2012. मूल से 12 मार्च 2012 को पुरालेखित. अभिगमन तिथि 12 मार्च 2012.
  2. सन्दर्भ त्रुटि: <ref> का गलत प्रयोग; faq-created नाम के संदर्भ में जानकारी नहीं है।
  3. Kuchling, Andrew M. (22 दिसम्बर 2006). "Interview with Guido van Rossum (July 1998)". amk.ca. मूल से 30 मार्च 2012 को पुरालेखित. अभिगमन तिथि 12 मार्च 2012.
  4. van Rossum, Guido (1993). "An Introduction to Python for UNIX/C Programmers". Proceedings of the NLUUG najaarsconferentie (Dutch UNIX users group). मूल से 1 मई 2011 को पुरालेखित. अभिगमन तिथि 14 जनवरी 2014. even though the design of C is far from ideal, its influence on Python is considerable.
  5. "Classes". The Python Tutorial. Python Software Foundation. मूल से 23 अक्तूबर 2012 को पुरालेखित. अभिगमन तिथि 2012-02-20. It is a mixture of the class mechanisms found in C++ and Modula-3
  6. Simionato, Michele. "The Python 2.3 Method Resolution Order". Python Software Foundation. मूल से 12 अप्रैल 2012 को पुरालेखित. अभिगमन तिथि 14 जनवरी 2014. The C3 method itself has nothing to do with Python, since it was invented by people working on Dylan and it is described in a paper intended for lispers
  7. Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. मूल से 24 अक्तूबर 2012 को पुरालेखित. अभिगमन तिथि 2012-02-09.
  8. Schemenauer, Neil; Peters, Tim; Hetland, Magnus Lie (2001-05-18). "PEP 255 -- Simple Generators". Python Enhancement Proposals. Python Software Foundation. मूल से 22 जनवरी 2014 को पुरालेखित. अभिगमन तिथि 2012-02-09.
  9. Smith, Kevin D.; Jewett, Jim J.; Montanaro, Skip; Baxter, Anthony (2 सितंबर 2004). "PEP 318 -- Decorators for Functions and Methods". Python Enhancement Proposals. Python Software Foundation. मूल से 6 नवंबर 2013 को पुरालेखित. अभिगमन तिथि 24 फ़रवरी 2012.
  10. Bini, Ola (2007). Practical JRuby on Rails Web 2.0 Projects: bringing Ruby on Rails to the Java platform. Berkeley: APress. पृ॰ 3. आई॰ऍस॰बी॰ऍन॰ 978-1590598818.
  11. सन्दर्भ त्रुटि: <ref> का गलत प्रयोग; pep0237 नाम के संदर्भ में जानकारी नहीं है।

इन्हें भी देखें

संपादित करें

बाहरी कड़ियाँ

संपादित करें