software - python tutorial pdf




পাইথন অগ্রগতি পথ-শিক্ষানবিশ থেকে গুরু (13)

শেখার আলগোরিদিম / গণিত / ফাইল আইও / পাইথনিক অপ্টিমাইজেশান

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

আপনি brute-force অ্যালগরিদম ব্যবহার করে যদি Python কাজ নিজেকে জোরদার করা হবে। এটি আপনাকে মেমরির বড় ডেটাসেটগুলি কীভাবে বের করতে এবং অভিধানগুলিতে দ্রুত ভাষা বৈশিষ্ট্যগুলির সাথে কার্যকরীভাবে অ্যাক্সেস করতে শিখাবে।

এই কাজ করে আমি শিখেছি:

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

এবং খুব গুরুত্বপূর্ণ

  • যখন ছেড়ে দেওয়া এবং সি বা সি ++ ব্যবহার করুন!

এই সব জৈব তথ্যবিজ্ঞান প্রাসঙ্গিক হতে হবে

আমি যে অভিজ্ঞতা থেকে পাইথনের OOP বৈশিষ্ট্য সম্পর্কে জানতাম না।

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

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

আমাকে প্রথমে যা জিজ্ঞাসা করতে হয় তা আমি সমৃদ্ধ করি না;)

  • আমি পাইথন শিখতে শিখতে চাই না
  • কিংবা আমি ভাষা সম্পর্কে পরিচিত হওয়ার সেরা উপায় খুঁজে বের করতে চাই না
  • অবশেষে, আমি 'এক কৌশল যা এটি সব' পদ্ধতিতে জানতে চাই না।

আমি কি সম্পর্কে আপনার মতামত জানতে চান, হয়:

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

আমি যে ধরনের উত্তর উপভোগ করবো (কিন্তু পাঠকদের অবাক করে দিতে পারব না: পি), এটিকে আরও বা কম আকারে ফর্ম্যাট করা হয়েছে:

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

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

সম্পাদনা করুন: ধন্যবাদ আপনার দুর্দান্ত ইনপুট, আমি পাইথন উন্নতির ট্র্যাকে ফিরে এসেছি! আমি সত্যিই কৃতজ্ঞ!



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

ভাষাটি কীভাবে পরিবর্তিত হয়েছে তা দেখে, সিদ্ধান্তগুলি এবং তাদের যুক্তিযুক্ত সিদ্ধান্তগুলি দেখে আপনি পাইথনের দর্শনকে শোষণ করবেন এবং বুঝতে পারবেন কিভাবে "মূঢ় পাইথন" আসে।

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


আপনার পাইথন জ্ঞান আরও একটি ভাল উপায় আপনি ইতিমধ্যে ব্যবহার লাইব্রেরি, প্ল্যাটফর্ম, এবং ফ্রেমওয়ার্ক সোর্স কোড মধ্যে খনন করা হয়।

উদাহরণস্বরূপ, যদি আপনি Django কোনও সাইট তৈরি করেন তবে আপনার প্রশ্নটি Django পারে এমন অনেক প্রশ্ন উত্তর দিতে পারেন যে Django কীভাবে বৈশিষ্ট্যটিকে কার্যকর করে।

এই ভাবে আপনি নতুন idioms, কোডিং শৈলী, এবং পাইথন কৌশল নিতে অবিরত করব। (কিছু ভাল হবে এবং কিছু খারাপ হবে।)

এবং যখন আপনি এমন কিছু পাইথনি দেখতে পান যা আপনি উৎসের মধ্যে বোঝেন না, # পিপিথন আইআরসি চ্যানেলে হপ্প করুন এবং আপনাকে প্রচুর "ভাষা আইনজীবী" ব্যাখ্যা করতে খুশি হবে।

বছরের পর বছর ধরে এই সামান্য ব্যাখ্যাগুলির একটি সংশ্লেষ ভাষা এবং এর সমস্ত অন্তর ও বহির্বিশ্বে আরও গভীর বোঝার দিকে পরিচালিত করে।


আমি আপনাকে সবচেয়ে সহজ এবং সবচেয়ে কার্যকরী পরামর্শ দেব যা মনে করি যে কেউ আপনাকে দিতে পারে: কোড

কোডিংয়ের মাধ্যমে আপনি কেবল একটি ভাষা ব্যবহার করতে পারেন (যা বোঝা বোঝায়)। আপনাকে সক্রিয়ভাবে কোডিং উপভোগ করতে হবে, অনুপ্রাণিত হতে হবে, প্রশ্ন জিজ্ঞাসা করতে এবং নিজের উত্তরগুলি খুঁজে পেতে হবে।

একটি ঘন্টা অতিরিক্ত রাখা হয়েছে? একটি স্ট্রিং বিপরীত হবে কোড লিখুন, এবং সবচেয়ে সর্বোত্তম সমাধান খুঁজে বের করুন। একটি বিনামূল্যে সন্ধ্যায়? কিছু ওয়েব scraping চেষ্টা না কেন। অন্যান্য মানুষ কোড পড়ুন। দেখুন তারা কীভাবে কাজ করে। আপনি কি করবেন নিজেকে জিজ্ঞাসা করুন।

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

এই আপনার দক্ষতার যাই হোক না কেন যাই হোক না কেন বৈধ। আপনি শেখার বন্ধ না। আপনার অতিরিক্ত সময় সক্রিয়ভাবে কোডিং করে আপনি একটু অতিরিক্ত প্রচেষ্টার সাথে ভাষা বুঝতে পারবেন এবং শেষ পর্যন্ত, একজন গুরু হবেন। আপনি জ্ঞান এবং পুনর্ব্যবহারযোগ্য কোড নির্মাণ এবং idioms মনে রাখবেন।


আমি পাইথন দক্ষতা প্রক্রিয়া মত কিছু গিয়েছিলাম:

  1. তালিকা বোঝার আবিষ্কার করুন
  2. generators আবিষ্কার করুন
  3. মানচিত্র অন্তর্ভুক্ত করুন , হ্রাস করুন, ফিল্টার করুন, iter, পরিসীমা, xrange প্রায়ই আপনার কোডের মধ্যে
  4. Decorators আবিষ্কার করুন
  5. Recursive ফাংশন লিখুন, অনেক
  6. itertools এবং functools আবিষ্কার করুন
  7. রিয়েল ওয়ার্ল্ড Haskell পড়ুন ( বিনামূল্যে অনলাইন পড়া )
  8. আপনার পুরানো পাইথন কোডটি পুনর্বিন্যাস করুন যাতে উচ্চ ক্রম ফাংশন, পুনরাবৃত্তি এবং কী কীট।
  9. আপনার পাইথন ক্লাসের সাথে প্রতিবার উপস্থাপন করার সময় আপনার ক cubicle সঙ্গী বিরক্ত। দাবি করুন এটি "ভাল" একটি অভিধান প্লাস কিছু ফাংশন হিসাবে বাস্তবায়িত হতে পারে। কার্যকরী প্রোগ্রামিং আলিঙ্গন।
  10. Strategy প্যাটার্নটি আবার আবিষ্কার করুন এবং তারপরে সেই সমস্ত জিনিসগুলি জরুরি কোড থেকে আপনি হার্ডস্কেসের পরে ভুলে যাওয়ার চেষ্টা করেছিলেন।
  11. একটি ভারসাম্য খুঁজুন।

গুগল সম্প্রতি একটি অনলাইন পাইথন ক্লাস ("অধ্যয়ন" হিসাবে "অধ্যয়ন একটি কোর্স") মুক্তি।

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

আমি জানি এই আপনার পুরো প্রশ্নের উত্তর না, কিন্তু আমি মনে করি এটি শুরু করার জন্য একটি দুর্দান্ত জায়গা!


ডাউনলোড করুন এবং উৎস কোড তাকান। তারা কিছু প্রশংসনীয় উন্নত কৌশল নিয়োগ।


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


পাইথন সাইটে টিউটোরিয়ালটি করেই আমি প্রথম গ্রীষ্মে পাইথন শিখেছি। (দুঃখের বিষয় যে, আমি এটি আর খুঁজে পাচ্ছি না, তাই আমি একটি লিঙ্ক পোস্ট করতে পারছি না)।

পরে, পাইথন আমাকে বিশ্ববিদ্যালয়ে আমার প্রথম বছরের কোর্সে পাঠানো হয়েছিল। পরবর্তী গ্রীষ্মে, আমি PythonChallenge এবং Google Code Jam এর সমস্যাগুলির সাথে অনুশীলন করেছি। এই সমস্যার সমাধান একটি অ্যালগরিদমিক দৃষ্টিকোণ থেকে পাশাপাশি পাইথন কী করতে পারে তা শেখার দৃষ্টিকোণ থেকে পাশাপাশি পাইথন থেকে সম্পূর্ণরূপে বেরিয়ে আসতে কিভাবে এটি প্রয়োগ করতে সাহায্য করে।

একই কারণে, আমি শুনেছি যে কোড গল্ফও ভালভাবে কাজ করে, কিন্তু আমি নিজের জন্য এটি চেষ্টা করে নি।


অন্তর্নিহিত বোঝা

  • একটি dir() সমতুল্য লিখুন
  • একটি type() সমতুল্য লিখুন
  • কিভাবে "monkey-patch"
  • বিভিন্ন ভাষা কিভাবে কাজ করে তা দেখতে dis মডিউল ব্যবহার করুন

এই জিনিস করছেন

  • কিভাবে Python বাস্তবায়িত হয় সম্পর্কে আপনি কিছু ভাল তাত্ত্বিক জ্ঞান দিতে
  • আপনি নিম্ন স্তরের প্রোগ্রামিং কিছু ভাল বাস্তব অভিজ্ঞতা দিতে
  • Python তথ্য কাঠামোর জন্য আপনি একটি ভাল স্বজ্ঞাত অনুভূতি দিতে

মেমোরি mgmt এর সাথে সম্পর্কিত Python এর ডেটা প্রকার এবং তাদের ভূমিকাগুলি (আরও গভীরভাবে) বুঝুন

সম্প্রদায়ের মধ্যে কিছু হিসাবে আপনি সচেতন, আমি পাইথন কোর্স শেখান , সবচেয়ে জনপ্রিয় ব্যক্তি ব্যাপক intro + ইন্টারমিডিয়েট কোর্স পাশাপাশি একটি "উন্নত" কোর্স যা অ্যাপ্লিকেশন উন্নয়নের বিভিন্ন এলাকায় প্রবর্তন।

প্রায়শই, আমি একটি প্রশ্ন জিজ্ঞেস করেছিলাম, "আমি কি আপনার ভূমিকা বা অগ্রিম কোর্সটি গ্রহণ করবো? আমি ইতিমধ্যে পাইথনকে 1-2 বছর ধরে প্রোগ্রামিং করেছি, এবং আমার মনে হয় যে আমার জন্য প্রারম্ভিক একটি খুব সহজ কাজ তাই আমি চাই সরাসরি অগ্রসর হতে চান ... আপনি কোন কোর্সটি সুপারিশ করবেন? "

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

এটি করার জন্য, আমি এই সহজ 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 বনাম জেনারেটর, ইত্যাদি; তবে অন্য সব পরামর্শ অন্য সময় জন্য অন্য পোস্ট। এই সময় সাহায্য করে আশা করি! :-)

গীত। স্বতঃস্ফূর্তকরণের সাথে আরও ঘনিষ্ঠ হওয়ার পাশাপাশি অন্যান্য প্রকল্পগুলির উত্স কোড অধ্যয়ন এবং উভয় পরামর্শগুলিতে একটি শক্তিশালী "+1" যোগ করার জন্য আমি অন্যান্য প্রতিক্রিয়াগুলির সাথে একমত!

PPS। গ্রেট প্রশ্ন BTW। আমি এইরকম কিছু জিজ্ঞেস করার জন্য শুরুতে যথেষ্ট স্মার্ট ছিলাম, কিন্তু এটি অনেক আগে থেকেই ছিল, এবং এখন আমি আমার বহু বছরের পূর্ণ সময় পাইথন প্রোগ্রামিং সহ অন্যদের সাহায্য করার চেষ্টা করছি !!


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