เส้นทางความก้าวหน้าของ Python - ตั้งแต่เด็กฝึกงานจนถึงกูรู


659

ฉันได้เรียนรู้ทำงานและเล่นกับ Python เป็นเวลาหนึ่งปีครึ่งแล้ว ในฐานะที่นักชีววิทยาหันมาใช้ข้อมูลสารสนเทศทางชีวภาพอย่างช้าๆภาษานี้เป็นหัวใจหลักของการมีส่วนร่วมที่สำคัญทั้งหมดที่ฉันได้ทำในห้องปฏิบัติการ ฉันหลงรักมากขึ้นหรือน้อยลงด้วยวิธีที่ Python อนุญาตให้ฉันแสดงคำตอบที่สวยงามและยังมีความหมายของภาษาที่ช่วยให้การไหลของธรรมชาติจากความคิดไปสู่รหัสที่ใช้การได้

สิ่งที่ฉันอยากรู้คือคำตอบของคำถามที่ฉันไม่ค่อยเห็นในฟอรัมนี้หรืออื่น ๆ คำถามนี้ดูเหมือนจะเป็นเรื่องสำคัญสำหรับฉันสำหรับทุกคนบนเส้นทางสู่การปรับปรุงของ Python แต่ใครจะสงสัยว่าขั้นตอนต่อไปของเขาควรเป็นอย่างไร

ให้ฉันสรุปสิ่งที่ฉันไม่ต้องการถามก่อน)

  • ฉันไม่ต้องการทราบวิธีเรียนรู้ Python อย่างรวดเร็ว
  • ฉันไม่ต้องการค้นหาวิธีที่ดีที่สุดในการทำความคุ้นเคยกับภาษา
  • ในที่สุดฉันไม่ต้องการที่จะรู้ว่า 'หนึ่งเคล็ดลับที่ทำทุกอย่าง' เข้าใกล้

สิ่งที่ฉันต้องการทราบความคิดเห็นของคุณเกี่ยวกับคือ:

ขั้นตอนใดบ้างที่คุณจะแนะนำให้กับนักเดินทาง Python ตั้งแต่การฝึกงานไปจนถึงสถานะของผู้นำศาสนา (อย่าลังเลที่จะหยุดทุกที่ที่ความเชี่ยวชาญของคุณสั่ง) เพื่อที่หนึ่งจะปรับปรุงได้อย่างต่อเนื่อง ผู้คนในกลุ่ม SO เกือบจะดูเหมือนจะสมควรได้รับการนมัสการเพราะความกล้าหาญของ Python ได้โปรดให้ความกระจ่างแก่เรา :)

ประเภทของคำตอบที่ฉันชอบ (แต่สามารถสร้างความประหลาดใจแก่ผู้อ่าน: P) ได้รับการจัดรูปแบบมากหรือน้อยเช่นนี้:

  • อ่านสิ่งนี้ (เช่น: python tutorial) ให้ใส่ใจกับรายละเอียดแบบนั้น
  • รหัสสำหรับเวลา / ปัญหา / บรรทัดของรหัสจำนวนมาก
  • จากนั้นให้อ่านสิ่งนี้ (เช่น: หนังสือเล่มนี้หรือหนังสือเล่มนั้น) แต่คราวนี้ให้ใส่ใจกับสิ่งนี้
  • แก้ไขปัญหาในชีวิตจริงไม่กี่อย่าง
  • จากนั้นไปอ่าน Y
  • อย่าลืมเข้าใจแนวคิดเหล่านี้
  • รหัสสำหรับเวลา X
  • กลับมาที่พื้นฐานดังกล่าวหรือย้ายไปที่ ...
  • (คุณได้รับจุด :)

ฉันสนใจที่จะทราบความคิดเห็นของคุณเกี่ยวกับสิ่งที่เราควรให้ความสนใจในแต่ละขั้นตอนเพื่อที่จะได้มีความคืบหน้าอย่างต่อเนื่อง หากคุณมาจากสาขาความเชี่ยวชาญเฉพาะให้อภิปรายเส้นทางที่คุณเห็นว่าเหมาะสมในสาขานี้

แก้ไข: ขอบคุณข้อมูลที่ยอดเยี่ยมของคุณฉันกลับมาบนเส้นทางปรับปรุง Python! ฉันซาบซึ้งจริงๆ!

คำตอบ:


471

ฉันคิดว่ากระบวนการของ Python mastery เป็นไปตามที่ต้องการ

  1. ค้นพบความเข้าใจในรายการ
  2. ค้นหาเครื่องกำเนิดไฟฟ้า
  3. รวมแผนที่ลดกรอง iter ช่วง xrangeเข้าไว้ในรหัสของคุณ
  4. ค้นพบมัณฑนากร
  5. เขียนฟังก์ชั่นวนซ้ำได้มาก
  6. ค้นพบitertoolsและfunctools
  7. อ่านReal World Haskell ( อ่านออนไลน์ฟรี )
  8. เขียนโค้ด Python เก่าของคุณอีกครั้งด้วยฟังก์ชั่นการสั่งซื้อที่สูงขึ้นการเรียกซ้ำและอะไรก็ตาม
  9. รบกวนเพื่อนเล็ก ๆ ของคุณทุกครั้งที่พวกเขานำเสนอคุณด้วยชั้นหลาม อ้างว่าเป็นไปได้ว่า "ดีกว่า" นำมาใช้เป็นพจนานุกรมและฟังก์ชั่นบางอย่าง ยอมรับการเขียนโปรแกรมที่ใช้งานได้
  10. ค้นพบรูปแบบกลยุทธ์แล้วทุกสิ่งเหล่านั้นจากรหัสจำเป็นที่คุณพยายามอย่างหนักที่จะลืมหลังจาก Haskell
  11. ค้นหาความสมดุล

@wheaties รายการที่ดีสุดรักมัน! ดูเหมือนว่าคุณมีอคติต่อการเขียนโปรแกรมการทำงานและอยู่ห่างจากวัตถุที่มุ่งเน้น ... มีเหตุผลพิเศษหรือไม่ ประสบการณ์ Haskell เปลี่ยนเส้นทางคุณไปสู่แนวทางนี้หรือไม่?
Morlock

8
ใช่และไม่. ฉันพบว่าฉันเขียนโค้ดที่กระชับและกระชับยิ่งขึ้นยิ่งฉันเข้าใกล้การเขียนโปรแกรมการทำงานมากขึ้น ที่กล่าวว่ามีสถานที่มากมายที่แสดงสิ่งต่าง ๆ อย่างชัดเจนยิ่งขึ้นในลักษณะที่จำเป็น มีเหตุผลที่ Real World Haskell ขายหมดในการประชุม Python มันทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้น คำแนะนำของฉันสำรวจแง่มุมต่างๆของ Python ให้ได้มากที่สุดแล้วลองใช้ภาษาที่ใช้งานได้
ข้าวสาลี

@wheaties ได้รับคำตอบเนื่องจากทั้งใกล้กับรูปแบบที่ขอและสร้างแรงบันดาลใจมาก ขอบคุณที่สละเวลาตอบ
Morlock

1
เริ่มต้น: พจนานุกรมหลังจากนั้นใน ... Mastery: Metaprogramming
gath

คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับ >> มันอาจเป็น "ดีกว่า" ถูกนำมาใช้เป็นพจนานุกรมพร้อมฟังก์ชั่นบางอย่าง <<?
Koobz

108

วิธีที่ดีวิธีหนึ่งในการเพิ่มความรู้ Python ของคุณคือการขุดลงในซอร์สโค้ดของไลบรารีแพลตฟอร์มและเฟรมเวิร์กที่คุณใช้อยู่แล้ว

ตัวอย่างเช่นหากคุณกำลังสร้างเว็บไซต์ Djangoคำถามมากมายที่อาจทำให้คุณไม่สามารถตอบได้โดยดูว่า Django ใช้คุณลักษณะที่เป็นปัญหาอย่างไร

วิธีนี้คุณจะยังคงรับสำนวนรูปแบบการเข้ารหัสและเคล็ดลับ Pythonใหม่ (บางคนจะดีและบางคนก็ไม่ดี)

และเมื่อคุณเห็นบางสิ่งที่ Pythony ที่คุณไม่เข้าใจในแหล่งข้อมูลให้ไปที่ #python IRC channelและคุณจะพบ "ทนายความด้านภาษา" มากมายที่ยินดีอธิบาย

การรวบรวมคำอธิบายเล็ก ๆ น้อย ๆ เหล่านี้ในช่วงหลายปีที่ผ่านมานำไปสู่ความเข้าใจที่ลึกซึ้งยิ่งขึ้นของภาษาและสิ่งที่อยู่ในนั้น


1
ฉันจะเพิ่มในสิ่งนี้แทนที่จะเพียงแค่ติดตั้งส่วนขยาย / ปลั๊กอิน django ลองเพิ่มรหัสด้วยตนเองโดยใช้สาขา git สิ่งนี้จะบังคับให้คุณอ่านรหัสที่คุณกำลังเพิ่มในโครงการ
g33kz0r

14
อยากรู้อยากเห็นทำไมใช้ IRCเมื่อพวกเราที่เหลือได้ประโยชน์จากคำถาม?
tshepang

1
+1 สำหรับ "สำนวนสไตล์และลูกเล่น" การใช้ชีวิตวัฒนธรรมที่แท้จริงโดยคนจริงที่อยู่ในการติดต่อ (แม้ว่าการติดต่อนี้จะหมายถึงการอ่านรหัสของกันและกันในกรณีนี้) เป็นสิ่งที่ทำให้ความรู้ของมนุษย์เปลี่ยนแปลงไปตามกาลเวลา
heltonbiker

92

ทำความเข้าใจกับชนิดข้อมูลของไพ ธ อนและบทบาทของพวกเขาเกี่ยวกับหน่วยความจำ mgmt

เนื่องจากพวกคุณบางคนในชุมชนทราบฉันสอนหลักสูตร Python หลักสูตรที่ได้รับความนิยมมากที่สุดคือหลักสูตร Intro + Intermediate รวมถึงหลักสูตร "ขั้นสูง" ซึ่งแนะนำการพัฒนาแอปพลิเคชั่นที่หลากหลาย

บ่อยครั้งที่ฉันถูกถามคำถามที่ค่อนข้างคล้ายกับ "ฉันควรจะเริ่มเรียนหลักสูตรขั้นสูงหรือไม่ฉันเคยเขียนโปรแกรม Python มา 1-2 ปีแล้วและฉันคิดว่าคำนำนั้นง่ายเกินไปสำหรับฉันดังนั้นฉันจึงควร ต้องการข้ามไปยังขั้นสูง ... หลักสูตรใดที่คุณอยากจะแนะนำ "

เพื่อตอบคำถามของพวกเขาฉันสำรวจเพื่อดูว่าพวกเขาแข็งแกร่งแค่ไหนในพื้นที่นี้ - ไม่ใช่ว่ามันเป็นวิธีที่ดีที่สุดในการวัดว่าพวกเขาพร้อมสำหรับหลักสูตรขั้นสูงหรือไม่ แต่เพื่อดูว่าความรู้พื้นฐานของพวกเขาเป็นอย่างไร โมเดลหน่วยความจำซึ่งเป็นสาเหตุของข้อบกพร่อง Python จำนวนมากที่เขียนโดยผู้ที่ไม่ได้เป็นแค่ผู้เริ่มต้นเท่านั้น

ในการทำเช่นนี้ฉันชี้ไปที่คำถามตอบคำถามง่ายๆ 2 ส่วนนี้: ตัวอย่าง 1: x = 42;  การ y = x;  x + 1 =;  พิมพ์ x, y Ex2: x = [1,2,3]; y = x; x [0] = 4; พิมพ์ x, y

หลายครั้งที่พวกเขาสามารถได้รับผลลัพธ์ แต่สาเหตุที่ยากและสำคัญกว่าของการตอบสนอง ... ฉันจะชั่งน้ำหนักผลลัพธ์เป็น 20% ของคำตอบในขณะที่ "ทำไม" ได้รับเครดิต 80% หากพวกเขาไม่สามารถเข้าใจสาเหตุได้ไม่ว่าพวกเขาจะมีประสบการณ์ของ Python อย่างไรฉันก็จะพาผู้คนไปยังบทนำที่ครอบคลุม + หลักสูตรระดับกลางเพราะฉันใช้เวลาหนึ่งการบรรยายเกี่ยวกับวัตถุและการจัดการหน่วยความจำจนถึงจุดที่คุณควรจะตอบ ผลผลิตและสาเหตุที่มีความมั่นใจเพียงพอ (เพียงเพราะคุณรู้จักไวยากรณ์ของ Python หลังจากผ่านไป 1-2 ปีแล้วก็ไม่ได้ทำให้คุณพร้อมที่จะก้าวไปไกลกว่าป้ายกำกับ "ผู้เริ่มต้น" จนกว่าคุณจะมีความเข้าใจที่ดีขึ้นเท่าที่ Python ทำงานภายใต้หน้าปก)

คำถามที่ประสบความสำเร็จที่ต้องการคำตอบที่คล้ายกันนั้นรุนแรงยิ่งขึ้นเช่น

ตัวอย่างที่ 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 vs. เครื่องกำเนิดไฟฟ้า ฯลฯ ; อย่างไรก็ตามคำแนะนำอื่น ๆ ทั้งหมดเป็นอีกโพสต์อีกครั้ง หวังว่านี่จะช่วยได้ในระหว่างนี้! :-)

PS ฉันเห็นด้วยกับคำตอบอื่น ๆ เพื่อทำความคุ้นเคยกับวิปัสสนามากขึ้นรวมถึงศึกษาซอร์สโค้ดของโครงการอื่น ๆ และเพิ่ม "+1" ที่แข็งแกร่งให้กับคำแนะนำทั้งสอง!

PPS คำถามที่ดี BTW ฉันหวังว่าฉันฉลาดพอที่จะเริ่มถามสิ่งนี้ แต่เมื่อนานมานี้และตอนนี้ฉันพยายามช่วยเหลือผู้อื่นด้วยการเขียนโปรแกรม Python เต็มเวลาหลายปีของฉัน !!


เวสลีย์ชุน! Morlock นี่คือประเภทของคนที่คุณพูดถึงในส่วนของคำถามของคุณ เป็นคนที่มีความรู้ลึกซึ้งและเป็นครูที่มีพรสวรรค์มากฉันได้รับแรงกระตุ้นอย่างมากจากหนังสือเล่มนี้
unmounted

ขอบคุณ @bvmou! ฉันทำได้แค่ตอบคำถามนี้เพราะฉันต้องผ่านกระบวนการเรียนรู้นี้เหมือนคนอื่น ๆ ... ของฉันเท่านั้นเมื่อ 13 ปีที่แล้ว! :-) ขอบคุณสำหรับการเสียบcorepython.comสรรพสินค้า! :-)
wescpy

@wescpy คุณช่วยอธิบายผลลัพธ์ที่ได้จาก example3 หรือชี้ให้ฉันเป็นแหล่งข้อมูลที่ดีเพื่อเรียนรู้สิ่งนี้ขอบคุณ
Sankalp

1
เคล็ดลับคือการคัดลอกการอ้างอิงวัตถุเท่านั้นไม่ใช่วัตถุเอง แค่นี้แหละ ... หวังว่ามันจะช่วยได้! ฉันได้พูดคุยเกี่ยวกับเรื่องนี้ไม่กี่สัปดาห์ที่ผ่านมาจริงที่ OSCON ฉันรู้สึกประหลาดใจเมื่อมีคนบอกว่ามันเป็น Python talk ที่ได้รับคะแนนสูงสุดในที่ประชุม! คุณสามารถดาวน์โหลดสไลด์ได้ที่นี่: oscon.com/oscon2013/public/schedule/detail/29374
wescpy

ผลลัพธ์คือ SyntaxError: ไวยากรณ์ไม่ถูกต้องใช่ไหม ทำไม? เพราะฉันใช้ Python 3 และprintไม่ใช่คำสั่ง
Konrad Borowski

67

ตรวจสอบการเขียนเรียงความของปีเตอร์นอร์วิกในการเป็นโปรแกรมเมอร์ต้นแบบใน 10 ปี: http://norvig.com/21-days.html ฉันจะเดิมพันมันถือเป็นจริงสำหรับภาษาใด ๆ


59

ทำความเข้าใจกับวิปัสสนา

  • เขียนdir()เทียบเท่า
  • เขียนtype()เทียบเท่า
  • หาวิธี"Monkey-patch"
  • ใช้disโมดูลเพื่อดูว่าภาษาต่าง ๆ ทำงานอย่างไร

ทำสิ่งเหล่านี้จะ

  • ให้ความรู้ทางทฤษฎีที่ดีเกี่ยวกับวิธีการใช้งานไพ ธ อน
  • ให้ประสบการณ์การใช้งานที่ดีในการเขียนโปรแกรมระดับล่าง
  • ให้ความรู้สึกที่ดีกับโครงสร้างข้อมูลของหลาม

1
"เขียนtype()เทียบเท่า" ที่จะยากมากถ้าคุณใช้ข้อมูลจำเพาะของ metaclassy แบบเต็มของtype!
asmeurer

48
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?

4
กูรู () ควรจะผ่าน ไม่มีอะไรสามารถอธิบายกูรูปล่อยให้มันผ่าน
Inv

1
หากคุณแก้ไข GIL ฉันคิดว่านั่นทำให้คุณอยู่ในระดับที่สูงกว่ากูรู แต่ก็ต่ำกว่าเผด็จการใจดี ;)
Adam Parkin

41

ฉันจะให้คำแนะนำที่ง่ายและมีประสิทธิภาพที่สุดแก่ฉันซึ่งฉันคิดว่าไม่มีใครสามารถให้คุณได้: รหัสรหัส

คุณเท่านั้นที่สามารถจะดีกว่าที่ใช้ภาษา (ซึ่งหมายถึงการทำความเข้าใจมัน) โดยการเข้ารหัส คุณต้องเพลิดเพลินไปกับการเข้ารหัสเป็นแรงบันดาลใจถามคำถามและค้นหาคำตอบด้วยตัวเอง

มีเวลาเหลือหนึ่งชั่วโมงใช่ไหม เขียนรหัสที่จะย้อนกลับสตริงและหาทางออกที่ดีที่สุด ตอนเย็นฟรี ทำไมไม่ลองใช้การขูดเว็บ อ่านรหัสประชาชนอื่น ๆ ดูว่าพวกเขาทำสิ่งต่าง ๆ อย่างไร ถามตัวเองว่าคุณจะทำอะไร

เมื่อฉันเบื่อที่คอมพิวเตอร์ของฉันฉันเปิด IDE และรหัสพายุ ฉันจดความคิดที่ฟังดูน่าสนใจและท้าทาย เครื่องมือย่อ URL หรือไม่ แน่นอนว่าฉันสามารถทำได้ โอ้ฉันได้เรียนรู้วิธีการแปลงตัวเลขจากฐานหนึ่งไปอีกฐานหนึ่งเป็นผลข้างเคียง!

สิ่งนี้ใช้ได้ในทุกระดับความสามารถของคุณ คุณไม่เคยหยุดเรียน ด้วยการเข้ารหัสอย่างแข็งขันในเวลาว่างคุณจะพยายามทำความเข้าใจภาษาและท้ายที่สุดก็จะกลายเป็นกูรู คุณจะสร้างความรู้และรหัสที่ใช้ซ้ำได้และจดจำสำนวน


24

หากคุณอยู่ในและใช้หลามเพื่อวิทยาศาสตร์ (ซึ่งดูเหมือนคุณ) ส่วนหนึ่งของนั้นจะเป็นการเรียนรู้และทำความเข้าใจกับห้องสมุดวิทยาศาสตร์สำหรับฉันสิ่งเหล่านี้จะเป็น

  • numpy
  • SciPy
  • matplotlib
  • Mayavi / mlab
  • ชาโค
  • Cython

การรู้วิธีการใช้ไลบรารี่ที่เหมาะสมและโค้ดของคุณเป็นสิ่งจำเป็นสำหรับการคำนวณทางวิทยาศาสตร์

ฉันต้องการเพิ่มว่าการจัดการชุดข้อมูลที่เป็นตัวเลขขนาดใหญ่ด้วยวิธี pythonic ทั่วไป (วิธีการเชิงวัตถุรายการตัววนซ้ำ) อาจไม่มีประสิทธิภาพมาก ในการคำนวณทางวิทยาศาสตร์คุณอาจจำเป็นต้องจัดโครงสร้างโค้ดของคุณในรูปแบบที่แตกต่างอย่างมากจากข้อมูลไพ ธ อนโคเดอร์ทั่วไปที่เข้าหาข้อมูล


ขอบคุณ แน่นอนว่ามันคุ้มค่าที่จะสละเวลาในการเรียนรู้ numpy และ scipy เพื่อเพิ่มประสิทธิภาพในการใช้หน่วยความจำสำหรับชุดข้อมูลขนาดใหญ่!
Morlock

1
อาจเพิ่มแพนด้าและ IPython ในรายการ
Eric Wilson

23

Google เพิ่งเปิดตัวคลาส Python ออนไลน์ ("class" เหมือนกับใน "หลักสูตรการเรียนรู้")

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

ฉันรู้ว่านี่ไม่ได้ตอบคำถามเต็มของคุณ แต่ฉันคิดว่ามันเป็นจุดเริ่มต้นที่ดี!


6
จริงๆแล้วการบรรยายวิดีโอจาก google นั้นมุ่งเน้นไปที่การปรับให้เป็นขั้นสูงฉันคิดว่า code.google.com/intl/fi-FI/edu/language/…
Tom Willis


12

ทำความเข้าใจกับประเภทและโครงสร้างข้อมูลทั้งหมดอย่างละเอียด

สำหรับทุกประเภทและโครงสร้างให้เขียนชุดโปรแกรมสาธิตที่ใช้งานทุกด้านของประเภทหรือโครงสร้างข้อมูล ถ้าคุณทำสิ่งนี้มันอาจจะคุ้มค่าที่จะบล็อกโน้ตในแต่ละอัน ... มันอาจจะมีประโยชน์สำหรับคนจำนวนมาก!


สิ่งนี้ไม่เพียง แต่จะมีประโยชน์ใน Python เท่านั้น แต่ยังรวมถึงนามธรรมด้วย
Humphrey Bogart

1
นี่คือสิ่งที่ฉันทำเช่นกันเมื่อใดก็ตามที่ฉันพบสิ่งปลูกสร้างใหม่ฉันเขียนโปรแกรมของเล่นเพื่อแสดงวิธีใช้ และทำให้มันออนไลน์ใน repo github: github.com/pzelnip/MiscPython
Adam Parkin

10

ฉันเรียนรู้หลามด้วยตัวเองเป็นครั้งแรกในช่วงฤดูร้อนเพียงแค่ทำแบบฝึกหัดบนไซต์หลาม (น่าเศร้าฉันดูเหมือนจะไม่สามารถหามันได้อีกต่อไปดังนั้นฉันจึงไม่สามารถโพสต์ลิงก์ได้)

ต่อมางูหลามได้รับการสอนให้ฉันในหนึ่งในหลักสูตรปีแรกของฉันที่มหาวิทยาลัย ในฤดูร้อนที่ตามมาฉันฝึกซ้อมกับPythonChallengeและมีปัญหาจาก Google Code JamJam การแก้ปัญหาเหล่านี้ได้รับความช่วยเหลือจากมุมมองของอัลกอริทึมเช่นเดียวกับจากมุมมองของการเรียนรู้ว่า Python สามารถทำอะไรได้บ้างรวมถึงวิธีการจัดการเพื่อให้ได้ประโยชน์อย่างเต็มที่จาก Python

ด้วยเหตุผลที่คล้ายกันฉันเคยได้ยินว่าโค้ดกอล์ฟทำงานได้ดี แต่ฉันไม่เคยลองด้วยตัวเอง


3
คุณหมายถึงการสอนนี้หรือไม่? Python 2: docs.python.org/tutorial/index.html ; งูหลาม 3: docs.python.org/py3k/tutorial/index.html
Humphrey Bogart

10

การเรียนรู้อัลกอริทึม / คณิตศาสตร์ / ไฟล์การเพิ่มประสิทธิภาพ IO / Pythonic

สิ่งนี้จะไม่ช่วยให้คุณรู้กูรู แต่เริ่มออกลองแก้ปัญหา Project Euler 50 ข้อแรกนั้นไม่ควรเสียภาษีหากคุณมีคณิตศาสตร์ในระดับมัธยมปลายที่ดีและรู้วิธีใช้ Google เมื่อคุณแก้ปัญหาคุณจะเข้าสู่ฟอรัมที่คุณสามารถดูวิธีแก้ไขปัญหาของผู้อื่นซึ่งจะสอนคุณมากกว่านี้ แม้ว่าจะเป็นสิ่งที่ดีและไม่โพสต์คำตอบของคุณเนื่องจากความคิดคือการสนับสนุนให้คนทำงานด้วยตนเอง

การบังคับตัวเองให้ทำงานใน Python จะไม่เกิดขึ้นหากคุณใช้อัลกอริธึมที่โหดเหี้ยม สิ่งนี้จะสอนวิธีการจัดวางชุดข้อมูลขนาดใหญ่ในหน่วยความจำและเข้าถึงได้อย่างมีประสิทธิภาพด้วยคุณสมบัติภาษาที่รวดเร็วเช่นพจนานุกรม

จากการทำสิ่งนี้ฉันเรียนรู้:

  • ไฟล์ IO
  • อัลกอริทึมและเทคนิคต่าง ๆ เช่น Dynamic Programming
  • โครงร่างข้อมูลหลาม
    • พจนานุกรม / hashmaps
    • รายการ
    • tuples
    • การรวมกันที่หลากหลายเช่นพจนานุกรมไปยังรายการของสิ่งอันดับ
  • เครื่องปั่นไฟ
  • ฟังก์ชั่นวนซ้ำ
  • การพัฒนาห้องสมุด Python
    • เค้าโครงระบบไฟล์
    • โหลดซ้ำระหว่างเซสชันล่าม

และที่สำคัญมาก ๆ

  • ควรเลิกใช้เมื่อใดและใช้ C หรือ C ++!

ทั้งหมดนี้ควรเกี่ยวข้องกับชีวสารสนเทศศาสตร์

เป็นที่ยอมรับว่าฉันไม่ได้เรียนรู้เกี่ยวกับฟีเจอร์ OOP ของ Python จากประสบการณ์นั้น


3
ฉันชอบไซต์ PE แต่ขอบอกตรงๆเลยว่ามันเป็นไซต์คณิตศาสตร์ไม่ใช่ไซต์โปรแกรม ปัญหาส่วนใหญ่ (หรืออย่างน้อยที่สุดปัญหาที่ฉันทำ) ทำให้คุณรู้ถึงเทคนิคทางคณิตศาสตร์มากกว่าภาษาโปรแกรมที่เกี่ยวข้อง บ่อยครั้งที่การแก้ปัญหาที่ดีในฟอรัมได้รับการตอบรับอย่างล้นหลามจากคลื่นของการแก้ปัญหาที่ไร้เดียงสา ฯลฯ
Adam Parkin

ในทางตรงกันข้ามฉันพบว่ามันเกี่ยวข้องกับการประยุกต์ใช้ทักษะการเขียนโปรแกรมและคณิตศาสตร์และที่สำคัญที่สุดคือการรวมกันของทั้งสองเพื่อแก้ปัญหาจริง คุณไม่สามารถใช้ PE เพื่อเรียนรู้การเขียนโปรแกรม Python ถ้าคุณมีทักษะคณิตศาสตร์ไม่ดี แต่คุณจะเรียนรู้วิธีการใช้ภาษาโดยใช้มันดังนั้นมันจึงเหมาะอย่างยิ่งหากคณิตศาสตร์ของคุณดีพอ
กัปตัน Lepton

7

คุณเคยเห็นหนังสือ " การเขียนโปรแกรมชีวสารสนเทศศาสตร์โดยใช้ Python " หรือไม่? ดูเหมือนว่าคุณเป็นสมาชิกของกลุ่มโฟกัสที่แน่นอน


2
หลังจากผ่านหนังสือเล่มนี้ไปอย่างรวดเร็วฉันพบว่าหนังสือเล่มนี้ไม่น่าสนใจมาก มันมุ่งเน้นไปที่ผู้ใช้ Python สามเณรมากและปัญหาของตัวเองไม่น่าสนใจมาก น่าเสียดายที่นี่เป็นพื้นที่ที่มีการใช้งาน Python เพิ่มขึ้นอย่างชัดเจน หนังสือที่น่าดึงดูดยิ่งกว่านี้คงยอดเยี่ยมมาก
Morlock

6

คุณมีเนื้อหาการอ่านอยู่มากมาย แต่ถ้าคุณสามารถจัดการได้มากขึ้นฉันขอแนะนำให้คุณเรียนรู้เกี่ยวกับวิวัฒนาการของไพ ธ อนด้วยการอ่านข้อเสนอการปรับปรุง Python โดยเฉพาะอย่างยิ่ง PEP ที่ "เสร็จสิ้น" และ "Deferred, Abandoned, Withdraw and Rejected" PEPs

เมื่อเห็นว่าภาษาเปลี่ยนไปอย่างไรการตัดสินใจและเหตุผลของภาษาคุณจะซึมซับปรัชญาของ Python และเข้าใจว่า "สำนวน Python" เป็นอย่างไร

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



3

การสอนให้คนอื่นที่เริ่มเรียนรู้ Python นั้นเป็นวิธีที่ยอดเยี่ยมในการทำให้ความคิดของคุณชัดเจนและบางครั้งฉันมักจะได้รับคำถามที่เรียบร้อยจากนักเรียนที่ทำให้ฉันต้องนึกถึงแนวคิดเกี่ยวกับ Python อีกครั้ง


2

ไม่ใช่สิ่งที่คุณขออย่างแน่นอน แต่ฉันคิดว่ามันเป็นคำแนะนำที่ดี

เรียนรู้ภาษาอื่นไม่สำคัญหรอก แต่ละภาษามีความคิดและการประชุมเป็นของตัวเองที่คุณสามารถเรียนรู้ได้ เรียนรู้เกี่ยวกับความแตกต่างในภาษาและที่สำคัญกว่าwhyนั้นคือความแตกต่าง ลองใช้ภาษาที่ใช้งานได้อย่างหมดจดเช่น Haskell และดูประโยชน์ (และความท้าทาย) ของฟังก์ชั่นที่ไม่มีผลข้างเคียง มาดูกันว่าคุณสามารถนำบางสิ่งที่คุณเรียนรู้จากภาษาอื่นมาใช้กับ Python ได้อย่างไร


1
Haskell นั้นน่าสนใจและฉันถูกชักจูงไปยัง Lisp แต่ฉันรู้สึกว่ายังมีอะไรอีกมากที่ฉันจะได้ค้นพบในโลก Python ก่อนที่ฉันจะเดินหน้าต่อไป
Morlock

2
landoflisp (.com) เพิ่งได้รับความสนใจของฉัน
Jiaaro

หากใครกำลังคิดเกี่ยวกับเสียงกระเพื่อมฉันแนะนำ Scheme
Tharindu Rusira

2

ฉันขอแนะนำให้เริ่มต้นด้วยสิ่งที่บังคับให้คุณสำรวจพลังการแสดงออกของไวยากรณ์ Python อนุญาตให้วิธีการเขียนฟังก์ชั่นเดียวกันหลายวิธีแตกต่างกัน แต่มักจะมีวิธีที่สวยงามและรวดเร็วที่สุด หากคุณคุ้นเคยกับสำนวนภาษาอื่นคุณอาจไม่เคยพบหรือยอมรับวิธีที่ดีกว่านี้ ฉันใช้เวลาหนึ่งสัปดาห์ในการแก้ปัญหาProject Euler ในช่วงสุดสัปดาห์และทำเว็บแอพง่าย ๆ กับ Django บน Google App Engine สิ่งนี้จะพาคุณตั้งแต่เด็กฝึกงานไปจนถึงสามเณร แต่คุณสามารถดำเนินการต่อเพื่อสร้าง webapps ขั้นสูงขึ้นและแก้ปัญหา Project Euler ที่สูงขึ้น หลังจากสองสามเดือนฉันกลับไปและแก้ไขปัญหา PE 20 ข้อแรกตั้งแต่ต้นในหนึ่งชั่วโมงแทนที่จะเป็นวันหยุดสุดสัปดาห์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.