python tutorial pdf software




पाइथन प्रगति पथ-प्रशिक्षु से गुरु तक (19)

एल्गोरिदम / गणित / फ़ाइल IO / पायथनिक अनुकूलन सीखना

यह आपको गुरु-हुड नहीं मिलेगा लेकिन शुरू करने के लिए, प्रोजेक्ट यूलर समस्याओं के माध्यम से काम करने का प्रयास करें यदि आपके पास सभ्य हाईस्कूल गणित है और Google को कैसे पता है तो पहले 50 या तो आपको टैक्स नहीं करना चाहिए। जब आप किसी को हल करते हैं तो आप फोरम में जाते हैं जहां आप अन्य लोगों के समाधानों को देख सकते हैं जो आपको और भी सिखाएंगे। यद्यपि सभ्य रहें और अपने समाधानों को पोस्ट न करें क्योंकि विचार लोगों को अपने लिए काम करने के लिए प्रोत्साहित करना है।

यदि आप ब्रूट-फोर्स एल्गोरिदम का उपयोग करते हैं तो पाइथन में काम करने के लिए मजबूर होना क्षमाशील होगा। यह आपको स्मृति में बड़े डेटासेट को कैसे रखना है और शब्दकोशों जैसे तेज़ भाषा सुविधाओं के साथ कुशलता से उन्हें कैसे पहुंचाएगा।

इसे स्वयं करने से मैंने सीखा:

  • फाइल आईओ
  • एल्गोरिदम और तकनीक जैसे गतिशील प्रोग्रामिंग
  • पायथन डेटा लेआउट
    • शब्दकोश / HashMaps
    • सूचियाँ
    • tuples
    • इसके विभिन्न संयोजन, उदाहरण के लिए tuples की सूचियों के लिए शब्दकोश
  • जेनरेटर
  • रिकर्सिव फ़ंक्शन
  • पाइथन पुस्तकालयों का विकास
    • फाइल सिस्टम लेआउट
    • एक दुभाषिया सत्र के दौरान उन्हें पुनः लोड करना

और यह भी बहुत महत्वपूर्ण है

  • छोड़ने और सी या सी ++ का उपयोग कब करें!

यह सब जैव सूचना विज्ञान के लिए प्रासंगिक होना चाहिए

माना जाता है कि मैंने उस अनुभव से पायथन की ओओपी सुविधाओं के बारे में नहीं सीखा।

https://code.i-harness.com

मैं पाइथन के साथ साढ़े सालों से सीख रहा हूं, काम कर रहा हूं और खेल रहा हूं। एक जीवविज्ञानी धीरे-धीरे जैव-सूचना विज्ञान की बारी बना रहा है, यह भाषा प्रयोगशाला में किए गए सभी प्रमुख योगदानों के बहुत ही महत्वपूर्ण है। जिस तरह से पाइथन मुझे सुंदर समाधान व्यक्त करने और भाषा के अर्थशास्त्र के साथ प्यार करने में अनुमति देता है, जिससे विचारों से ऐसे प्राकृतिक प्रवाह को व्यावहारिक कोड तक पहुंचने की अनुमति मिलती है।

मैं जो जानना चाहता हूं वह इस तरह के प्रश्न का उत्तर है जिसे मैंने शायद ही कभी या अन्य मंचों में देखा है। पाइथन सुधार के रास्ते पर किसी के लिए यह सवाल मेरे लिए केंद्रीय लगता है लेकिन कौन सोचता है कि उसके अगले कदम क्या होना चाहिए।

मुझे जो कुछ मैं पहले नहीं पूछना चाहता हूं उसे समेटने दो;)

  • मैं नहीं जानना चाहता कि कैसे पाइथन सीखना है
  • न ही मैं भाषा से परिचित होने का सबसे अच्छा तरीका खोजना चाहता हूं
  • अंत में, मैं एक 'एक चाल जो यह सब करता है' दृष्टिकोण नहीं जानना चाहता।

मैं जो आपकी राय जानना चाहता हूं, वह है:

प्रशिक्षुओं से गुरु की स्थिति (जहां भी आपकी विशेषज्ञता इसे निर्देशित करती है, वहां से रोकने के लिए स्वतंत्र महसूस करें) के लिए आप एक पायथन यात्रा करने वाले के लिए क्या कदम उठाएंगे, ताकि एक समय में एक कदम बेहतर और बेहतर पायथन कोडर बन जाए। एसओ पर कुछ लोग लगभग अपने पाइथन कौशल के लिए पूजा के योग्य लगते हैं, कृपया हमें प्रबुद्ध करें :)

मैं किस तरह के उत्तरों का आनंद लेता हूं (लेकिन पाठकों को आश्चर्यचकित करने के लिए स्वतंत्र महसूस करें: पी), इस तरह प्रारूपित किया गया है:

  • इसे पढ़ें (उदाहरण: पायथन ट्यूटोरियल), उस तरह के विवरण पर ध्यान दें
  • कोड की इतनी बार / समस्या / रेखाओं के लिए कोड
  • फिर, इसे पढ़ें (उदाहरण: यह या वह पुस्तक), लेकिन इस बार, इस पर ध्यान दें
  • कुछ वास्तविक जीवन समस्याओं को झुकाएं
  • फिर, वाई पढ़ने के लिए आगे बढ़ें।
  • इन अवधारणाओं को समझना सुनिश्चित करें
  • एक्स समय के लिए कोड
  • इस तरह की और मूल बातें वापस आओ या आगे बढ़ें ...
  • (तुम समझ गए :)

मैं वास्तव में प्रगति के लिए (निश्चित रूप से उचित प्रयासों के साथ), विभिन्न चरणों में, ध्यान देने के लिए वास्तव में क्या ध्यान देना चाहिए, इस बारे में आपकी राय जानना चाहता हूं। यदि आप विशेषज्ञता के एक विशिष्ट क्षेत्र से आते हैं, तो इस क्षेत्र में उचित मार्ग के बारे में चर्चा करें।

संपादित करें: आपके महान इनपुट के लिए धन्यवाद, मैं पाइथन सुधार ट्रैक पर वापस आ गया हूं! मैं सचमुच प्रशंसा करता हूँ!


10 वर्षों में मास्टर प्रोग्रामर बनने पर पीटर नॉरविग का निबंध देखें: http://norvig.com/21-days.html । मैं चाहता हूं कि यह किसी भी भाषा के लिए सच है।


Google ने हाल ही में एक ऑनलाइन पायथन कक्षा ("कक्षा" के रूप में "अध्ययन के पाठ्यक्रम" के रूप में जारी की)।

http://code.google.com/edu/languages/google-python-class/

मुझे पता है कि यह आपके पूरे प्रश्न का उत्तर नहीं देता है, लेकिन मुझे लगता है कि यह शुरू करने के लिए एक महान जगह है!


आपके पायथन ज्ञान को आगे बढ़ाने का एक अच्छा तरीका पुस्तकालयों, प्लेटफार्मों और ढांचे के स्रोत कोड में खोदना है जो आप पहले से उपयोग करते हैं।

उदाहरण के लिए यदि आप Django पर एक साइट बना रहे हैं, तो आपके द्वारा स्टंप किए जाने वाले कई प्रश्नों का उत्तर देकर उत्तर दिया जा सकता है कि Django प्रश्न में इस सुविधा को कैसे लागू करता है।

इस तरह आप नए मुहावरे, कोडिंग शैलियों और पायथन चाल चुनना जारी रखेंगे। (कुछ अच्छे होंगे और कुछ खराब होंगे।)

और जब आप कुछ पाइथनी देखते हैं जिसे आप स्रोत में नहीं समझते हैं, तो #python आईआरसी चैनल पर जाएं और आपको समझाए जाने के लिए बहुत सारे "भाषा वकील" मिलेंगे।

वर्षों से इन छोटी स्पष्टीकरणों का एक संग्रह भाषा और उसके सभी इंस और बहिष्कारों की गहरी समझ को जन्म देता है।


आपके पास पहले से ही बहुत सारी पढ़ाई सामग्री है, लेकिन यदि आप अधिक संभाल सकते हैं, तो मैं आपको पाइथन एन्हांसमेंट प्रस्तावों, विशेष रूप से "समाप्त" पीईपी और "स्थगित, त्याग दिया, निकाला गया, और अस्वीकार" पढ़ने के द्वारा पाइथन के विकास के बारे में सीखने की सलाह देता हूं। Peps।

यह देखते हुए कि भाषा कैसे बदल गई है, निर्णय और उनके तर्कसंगत निर्णय, आप पाइथन के दर्शन को अवशोषित करेंगे और समझेंगे कि "बेवकूफ पायथन" कैसे आता है।

http://www.python.org/dev/peps/


किसी और को शिक्षण जो पाइथन सीखना शुरू कर रहा है हमेशा आपके विचारों को स्पष्ट करने का एक शानदार तरीका है और कभी-कभी, मुझे आमतौर पर उन छात्रों से बहुत से साफ प्रश्न मिलते हैं जिनके बारे में मुझे पाइथन के बारे में वैचारिक चीजों को फिर से सोचना पड़ता है।



ठीक वही नहीं जो आप पूछ रहे हैं, लेकिन मुझे लगता है कि यह अच्छी सलाह है।

एक और भाषा सीखें, इससे कोई फर्क नहीं पड़ता। प्रत्येक भाषा में अपने स्वयं के विचार और सम्मेलन होते हैं जिन्हें आप सीख सकते हैं। भाषाओं में मतभेदों के बारे में जानें और अधिक महत्वपूर्ण बात यह है why वे अलग why हैं। हास्केल जैसी पूरी तरह कार्यात्मक भाषा आज़माएं और साइड इफेक्ट्स से मुक्त कार्यों के कुछ लाभ (और चुनौतियों) देखें। देखें कि आप कुछ भाषाओं को पाइथन से सीखने वाली कुछ चीजों को कैसे लागू कर सकते हैं।



मैं आपको सलाह का सबसे सरल और सबसे प्रभावी टुकड़ा दूंगा, मुझे लगता है कि कोई आपको दे सकता है: कोड

कोडिंग द्वारा आप केवल एक भाषा (जो इसे समझने का तात्पर्य है) का उपयोग करने में बेहतर हो सकते हैं। आपको सक्रिय रूप से कोडिंग का आनंद लेना, प्रेरित होना, प्रश्न पूछना, और अपने आप से जवाब ढूंढना है।

एक घंटे आराम करने के लिए मिला? कोड लिखें जो एक स्ट्रिंग को उलट देगा, और सबसे इष्टतम समाधान का पता लगाएगा। एक मुफ्त शाम? कुछ वेब-स्क्रैपिंग का प्रयास क्यों न करें। अन्य लोगों के कोड पढ़ें। देखें कि वे चीजें कैसे करते हैं। खुद से पूछें कि आप क्या करेंगे।

जब मैं अपने कंप्यूटर पर ऊब जाता हूं, तो मैं अपना आईडीई और कोड-तूफान खोलता हूं। मैं उन विचारों को कम करता हूं जो दिलचस्प और चुनौतीपूर्ण लगते हैं। एक यूआरएल शॉर्टनर? निश्चित रूप से, मैं यह कर सकता हूँ। ओह, मैंने सीखा है कि संख्याओं को एक आधार से दूसरी तरफ एक साइड इफेक्ट के रूप में कैसे परिवर्तित किया जाए!

यह आपके कौशल स्तर जो भी मान्य है। आप सीखना कभी नहीं रोकते। अपने खाली समय में सक्रिय रूप से कोडिंग करके, आप थोड़ा अतिरिक्त प्रयास करेंगे, भाषा को समझने के लिए आते हैं, और आखिरकार, एक गुरु बन जाते हैं। आप ज्ञान और पुन: प्रयोज्य कोड तैयार करेंगे और मुहावरे को याद करेंगे।


मैं कुछ ऐसी चीज से शुरू करने की अनुशंसा करता हूं जो आपको वाक्यविन्यास की अभिव्यक्तित्मक शक्ति का पता लगाने के लिए मजबूर करे। पायथन एक ही कार्यक्षमता लिखने के कई अलग-अलग तरीकों की अनुमति देता है, लेकिन अक्सर एक सबसे सुंदर और सबसे तेज़ दृष्टिकोण होता है। यदि आप अन्य भाषाओं के मुहावरे में उपयोग किए जाते हैं, तो आप कभी भी इन बेहतर तरीकों को अन्यथा नहीं ढूंढ पाएंगे या स्वीकार नहीं कर सकते हैं। मैंने पहले 20 या तो परियोजना यूलर समस्याओं के माध्यम से एक सप्ताहांत ट्राउजिंग बिताई और Google App Engine पर Django के साथ एक सरल वेबपैप बनाया। यह आपको केवल प्रशिक्षु से लेकर नौसिखिया तक ले जाएगा, लेकिन फिर आप कुछ और उन्नत वेबपैप्स बनाना जारी रख सकते हैं और अधिक उन्नत प्रोजेक्ट यूलर समस्याओं को हल कर सकते हैं। कुछ महीनों के बाद मैं वापस गया और सप्ताहांत की बजाय एक घंटे में पहली 20 पीई समस्याओं को हल कर दिया।


मैंने पाइथन साइट पर ट्यूटोरियल करके बस गर्मी में अपने आप पहले पाइथन सीखा (दुख की बात है, मुझे लगता है कि अब मैं इसे ढूंढने में सक्षम नहीं हूं, इसलिए मैं एक लिंक पोस्ट नहीं कर सकता)।

बाद में, विश्वविद्यालय में मेरे पहले वर्ष के पाठ्यक्रमों में से एक में पाइथन मुझे सिखाया गया था। बाद में गर्मियों में, मैंने PythonChallenge और Google Code Jam से समस्याओं के साथ अभ्यास किया। इन समस्याओं को हल करने से एल्गोरिदमिक परिप्रेक्ष्य के साथ-साथ सीखने के परिप्रेक्ष्य से पाइथन क्या कर सकता है साथ ही पाइथन से पूरी तरह से बाहर निकलने के लिए इसका उपयोग कैसे किया जा सकता है।

इसी कारण से, मैंने सुना है कि कोड गोल्फ भी काम करता है, लेकिन मैंने कभी अपने लिए यह कोशिश नहीं की है।


मैंने सोचा कि पाइथन की निपुणता की प्रक्रिया कुछ इस प्रकार है:

  1. सूची की समझ की खोज करें
  2. generators
  3. नक्शा, कम करें, फिल्टर, इटर, रेंज, xrange अक्सर अपने कोड में शामिल करें
  4. Decorators
  5. रिकर्सिव फ़ंक्शन लिखें, बहुत कुछ
  6. itertools और functools डिस्कवर
  7. रियल वर्ल्ड हास्केल पढ़ें ( मुफ्त ऑनलाइन पढ़ें )
  8. अपने सभी पुराने पायथन कोड को बहुत अधिक ऑर्डर फ़ंक्शंस, रिकर्सन और व्हाट्नॉट के साथ दोबारा लिखें।
  9. हर बार जब वे आपको पाइथन कक्षा के साथ पेश करते हैं तो अपने क्यूबिकल साथी को परेशान करें। दावा करें कि यह एक शब्दकोश और कुछ कार्यों के रूप में लागू "बेहतर" हो सकता है। कार्यात्मक प्रोग्रामिंग गले लगाओ।
  10. Strategy पैटर्न को फिर से खोजें और फिर उन सभी चीजों को अनिवार्य कोड से आपने हास्केल के बाद भूलना बहुत कठिन प्रयास किया।
  11. एक संतुलन पाएं।

यदि आप विज्ञान के लिए पाइथन में हैं और इसका उपयोग कर रहे हैं (जो आपको लगता है) तो इसका हिस्सा वैज्ञानिक पुस्तकालयों को सीखना और समझना होगा, मेरे लिए यह होगा

  • numpy
  • scipy
  • matplotlib
  • मायावी / mlab
  • चाको
  • Cython

सही पुस्तकालयों का उपयोग कैसे करें और वैज्ञानिक कोडिंग के लिए अपने कोड को वेक्टरिज़ करना आवश्यक है।

मैं इसे जोड़ना चाहता था, सामान्य पायथनिक तरीकों (वस्तु उन्मुख दृष्टिकोण, सूचियों, इटरेटर) में बड़े संख्यात्मक डेटासेट को संभालना बेहद अक्षम हो सकता है। वैज्ञानिक कंप्यूटिंग में, आपके कोड को उन तरीकों से ढंकना आवश्यक हो सकता है जो कि पारंपरिक पारंपरिक पायथन कोडर डेटा तक कैसे पहुंचते हैं।


Twisted डाउनलोड करें और स्रोत कोड देखें। वे कुछ सुंदर उन्नत तकनीकों को रोजगार देते हैं।


आत्मनिरीक्षण को समझें

  • एक dir() समकक्ष लिखें
  • एक type() समकक्ष type()
  • पता लगाएं कि "monkey-patch" कैसे करें
  • यह देखने के लिए कि विभिन्न भाषा कैसे काम करती है, डी मॉड्यूल का उपयोग करें

इन चीजों को करना होगा

  • पाइथन को कैसे कार्यान्वित किया जाता है इसके बारे में आपको कुछ अच्छा सैद्धांतिक ज्ञान दें
  • आपको निम्न स्तर के प्रोग्रामिंग में कुछ अच्छा व्यावहारिक अनुभव दें
  • आपको पाइथन डेटा संरचनाओं के लिए एक अच्छा अंतर्ज्ञानी अनुभव देता है

मेमोरी एमजीएमटी के संबंध में पाइथन के डेटा प्रकार और उनकी भूमिकाओं को समझें (अधिक गहराई से)

चूंकि आप में से कुछ समुदाय में जानते हैं, मैं पाइथन पाठ्यक्रम पढ़ता हूं , सबसे लोकप्रिय इंट्रो + इंटरमीडिएट कोर्स के साथ-साथ एक "उन्नत" पाठ्यक्रम भी है जो अनुप्रयोग विकास के विभिन्न क्षेत्रों को पेश करता है।

अक्सर, मुझे एक सवाल पूछा जाता है, "क्या मुझे अपना परिचय या उन्नत पाठ्यक्रम लेना चाहिए? मैं पहले से ही पाइथन प्रोग्रामिंग कर रहा हूं, और मुझे लगता है कि परिचय मेरे लिए बहुत आसान है इसलिए मैं चाहता हूं सीधे उन्नत तक कूदना पसंद है ... आप किस कोर्स की सिफारिश करेंगे? "

अपने प्रश्न का उत्तर देने के लिए, मैं यह जांचने की जांच करता हूं कि वे इस क्षेत्र में कितने मजबूत हैं - यह नहीं कि यह मापने का सबसे अच्छा तरीका है कि वे किसी भी उन्नत पाठ्यक्रम के लिए तैयार हैं या नहीं, लेकिन यह देखने के लिए कि उनका मूल ज्ञान पाइथन की वस्तुओं का कितना अच्छा है और मेमोरी मॉडल, जो उन लोगों द्वारा लिखी गई कई पायथन बग का कारण है जो न केवल शुरुआती हैं बल्कि जो उससे आगे चले गए हैं।

ऐसा करने के लिए, मैं उन्हें इस साधारण 2-भाग प्रश्नोत्तरी प्रश्न पर इंगित करता हूं:

कई बार, वे आउटपुट प्राप्त करने में सक्षम होते हैं, लेकिन प्रतिक्रिया अधिक कठिन और अधिक महत्वपूर्ण क्यों है ... मैं आउटपुट का जवाब 20% के रूप में करता हूं जबकि "क्यों" 80% क्रेडिट प्राप्त करता है। यदि वे क्यों नहीं प्राप्त कर सकते हैं, भले ही उनके पास पाइथन का अनुभव कैसा है, मैं हमेशा लोगों को व्यापक परिचय + इंटरमीडिएट कोर्स में ले जाऊंगा क्योंकि मैं ऑब्जेक्ट्स और मेमोरी मैनेजमेंट पर उस बिंदु पर एक व्याख्यान खर्च करता हूं जहां आपको जवाब देने में सक्षम होना चाहिए उत्पादन और पर्याप्त आत्मविश्वास के साथ क्यों। (सिर्फ इसलिए कि आप 1-2 साल बाद पाइथन के सिंटैक्स को जानते हैं, आपको "शुरुआती" लेबल से आगे बढ़ने के लिए तैयार नहीं करता है जब तक कि आपके पास कवर के तहत पाइथन कैसे काम करता है, उतनी बेहतर समझ हो।)

एक समान उत्तर देने के लिए एक सफल पूछताछ भी कठिन है, उदाहरण के लिए,

उदाहरण 3

x = ['foo', [1,2,3], 10.4]
y = list(x) # or x[:]
y[0] = 'fooooooo'
y[1][0] = 4
print x
print y

मेरे द्वारा सुझाए गए अगले विषय अच्छी तरह से संदर्भ गिनती को समझने के लिए हैं, सीखना कि "इंटर्निंग" का अर्थ क्या है (लेकिन इसका उपयोग नहीं करना), उथले और गहरी प्रतियों (जैसे उपरोक्त उदाहरण 3 में) के बारे में सीखना, और अंत में, विभिन्न प्रकारों के बीच अंतर-संबंध और भाषा में संरचनाएं, यानी सूचियां बनाम tuples, dicts बनाम सेट, सूची समझ बनाम जेनरेटर अभिव्यक्ति, iterators बनाम जनरेटर, आदि; हालांकि उन सभी अन्य सुझावों को एक और समय के लिए एक और पोस्ट है। उम्मीद है कि इस बीच में मदद करता है! :-)

ps। मैं आत्मनिरीक्षण के साथ अधिक अंतरंग होने के साथ-साथ अन्य परियोजनाओं के स्रोत कोड का अध्ययन करने और दोनों सुझावों के लिए एक मजबूत "+1" जोड़ने के लिए अन्य प्रतिक्रियाओं से सहमत हूं!

पी पी एस। महान सवाल बीटीडब्ल्यू। काश मैं शुरुआत में कुछ ऐसा पूछने के लिए काफी स्मार्ट था, लेकिन यह बहुत समय पहले था, और अब मैं अपने कई वर्षों के पूर्णकालिक पायथन प्रोग्रामिंग के साथ दूसरों की मदद करने की कोशिश कर रहा हूं !!


सभी डेटा प्रकारों और संरचनाओं को अच्छी तरह से समझें

प्रत्येक प्रकार और संरचना के लिए, डेमो प्रोग्राम की एक श्रृंखला लिखें जो प्रकार या डेटा संरचना के हर पहलू का प्रयोग करती है। यदि आप ऐसा करते हैं, तो प्रत्येक पर ब्लॉग नोट्स के लिए उपयुक्त हो सकता है ... यह बहुत से लोगों के लिए उपयोगी हो सकता है!


def apprentice():
  read(diveintopython)
  experiment(interpreter)
  read(python_tutorial)
  experiment(interpreter, modules/files)
  watch(pycon)

def master():
  refer(python-essential-reference)
  refer(PEPs/language reference)
  experiment()
  read(good_python_code) # Eg. twisted, other libraries
  write(basic_library)   # reinvent wheel and compare to existing wheels
  if have_interesting_ideas:
     give_talk(pycon)

def guru():
  pass # Not qualified to comment. Fix the GIL perhaps?




python