เป็นที่นิยมมากขึ้นกว่าเดิม โดยจะใช้ทุกที่ที่เป็นไปได้ ตั้งแต่เซิร์ฟเวอร์แบ็กเอนด์ไปจนถึงการพัฒนาเกมส่วนหน้า และอื่นๆ Python ได้รับการพิจารณาอย่างถูกต้องว่าเป็นภาษาสำหรับใช้งานทั่วไป และกำลังกลายเป็นเครื่องมือที่ต้องมีอย่างรวดเร็วในคลังแสงของโปรแกรมเมอร์ที่เคารพตนเอง
แต่ Python ไม่ได้รับความนิยมเพียงเพราะมันได้รับความนิยม ง่ายต่อการเรียนรู้ อ่านได้เหมือนโค้ดเทียม และมีความไดนามิกสูง อย่างไรก็ตาม การเรียนรู้ภาษาใหม่อาจเป็นเรื่องท้าทาย การหาสถานที่ที่เหมาะสมในการศึกษา และผู้คนที่คุณสามารถเรียนรู้ข้อมูลใหม่ๆ จะช่วยแก้ปัญหาได้ครึ่งหนึ่ง คำแนะนำของเราจะช่วยคุณในเรื่องนี้ นี่จะเป็นแผนที่จะเข้าใจผิดได้ซึ่งจะทำให้การเรียนรู้ Python ง่ายขึ้น และทำให้การเรียนรู้สนุกและน่าสนใจ
ภารกิจที่ 1: เริ่มต้นด้วยพื้นฐาน
ในขณะที่เขียนบทความนี้ Python มีสองเวอร์ชันหลัก: Python 2.7 และ Python 3.2 เวอร์ชันที่คุณเลือกเรียนนั้นไม่สำคัญนักเนื่องจากความแตกต่างจะมีน้อยมากโดยเฉพาะสำหรับผู้เริ่มต้น แต่คุณควรรู้ว่า Python 2 รองรับไลบรารีของบุคคลที่สามมากกว่า ในขณะที่ Python 3 มุ่งเน้นไปที่นักพัฒนาที่ทำงานเพื่อปรับปรุงภาษาเป็นหลัก ทางเลือกเป็นของคุณ หากโค้ดจากบทช่วยสอนใด ๆ ไม่ทำงานตามที่ตั้งใจ ตรวจสอบให้แน่ใจว่าคุณใช้ Python เวอร์ชันที่เหมาะสมจากบทช่วยสอนนั้น
Wikibooks เป็นแหล่งข้อมูลที่เชื่อถือได้สำหรับการเรียนรู้สิ่งใหม่ๆ มาโดยตลอด และ Python ก็ไม่มีข้อยกเว้น ที่นี่คุณจะได้พบกับชุดบทช่วยสอนดีๆ ที่จะช่วยให้คุณคุ้นเคยกับ Python มากขึ้น ไม่มีศัพท์เฉพาะทางด้านเทคนิคมากนัก และคุณสามารถเริ่มเขียนโค้ดได้อย่างรวดเร็ว ซึ่งจะเป็นประสบการณ์ที่คุ้มค่าอย่างแน่นอน ดังนั้น ฉันขอแนะนำไซต์นี้ให้เป็นสถานที่ที่ดีในการเริ่มต้นการเดินทางด้วย Python ของคุณ
คุณจะไม่พบแหล่งข้อมูลที่ดีไปกว่าเอกสารอย่างเป็นทางการบน python.org อย่างไรก็ตาม หากคุณต้องการเริ่มต้นจากที่นี่ทันที นี่อาจไม่ใช่ความคิดที่ดี
เนื้อหาที่นี่มีเนื้อหาทางเทคนิคมากกว่าวิกิหนังสือ ซึ่งจะเป็นประโยชน์ในภายหลังเมื่อคุณก้าวหน้าในการเรียนรู้ภาษา สำหรับผู้เริ่มต้น เนื้อหาอาจดูซับซ้อนและสิ่งนี้จะพิสูจน์ได้ว่าเป็นอุปสรรคในการเรียนรู้ภาษาที่เรียบง่ายและสวยงามนี้
สำหรับผู้เริ่มต้น ความแตกต่างที่เห็นได้ชัดเจนที่สุดระหว่าง Python 2 และ Python 3 น่าจะเป็นความสามารถของ Python 2 ในการใช้การพิมพ์โดยไม่มีวงเล็บ จำเป็นต้องมีวงเล็บใน Python 3 นั่นคือทั้งหมด
ภารกิจที่ 2: บทช่วยสอนและ screencasts
เพลย์ลิสต์ NewBoston นั้นยอดเยี่ยมเสมอและคุณสามารถเรียนรู้ภาษาได้มากมาย "บัคกี้" เป็นผู้สอนที่ยอดเยี่ยม เขาสนใจที่จะฟังเพราะเขาพบความสมดุลระหว่างความตลกและความรู้ดี สิ่งที่เขาพยายามสื่อนั้นง่ายต่อการเข้าใจเสมอ ฉันแนะนำให้ลองดูเพลย์ลิสต์ของเขา โดยเฉพาะเพลย์ลิสต์ Python คุณไม่จำเป็นต้องมีความรู้ด้านการเขียนโปรแกรมใดๆ หลังจากดูวิดีโอการสอนของเขาแล้ว คุณจะเข้าใจภาษาได้อย่างมั่นคง
Nettuts+ Python ตั้งแต่เริ่มต้น
การแนะนำ Python ที่ดีคือหลักสูตรของ Giles Lavelle เช่นเดียวกับซีรีส์ของ TheNewBoston Lavelle ถือว่าคุณไม่มีประสบการณ์ในการเขียนโปรแกรม
หากคุณต้องการดูแอปพลิเคชันในโลกแห่งความเป็นจริงหรือต้องการทำความเข้าใจการพัฒนาเว็บ Python ซีรีส์นี้เหมาะอย่างยิ่ง
ใน screencast นี้ คุณจะสร้างเว็บไซต์แบบไดนามิกตั้งแต่เริ่มต้นโดยใช้เฟรมเวิร์ก Django Python
หน้าจอ Python จาก ShowMeDo
StackOverflow ไม่ใช่แค่มือใหม่ จุดบกพร่อง และปัญหาเท่านั้น
ShowMeDo มีแค็ตตาล็อกวิดีโอที่เกี่ยวข้องกับ Python มากมาย แม้ว่าไซต์อาจดูเหมือนไม่มีอินเทอร์เฟซผู้ใช้ที่ดีที่สุด แต่ก็มีวิดีโอที่เป็นประโยชน์มากมาย ตั้งแต่ข้อมูลสำหรับผู้เริ่มต้นไปจนถึงเทคนิคขั้นสูงในการใช้ Python คุณควรตรวจสอบไซต์นี้อย่างแน่นอน
สร้างบอท Python ที่สามารถเล่นเกมบนเว็บได้
ในบทช่วยสอนนี้ คุณจะได้ทำความคุ้นเคยกับเนื้อหาเฉพาะ ฉันไม่แนะนำให้ผู้เริ่มต้นใช้งานเด็ดขาด อย่างไรก็ตาม ฉันคิดว่ามันคุ้มค่าที่จะกล่าวถึง ในบทช่วยสอนนี้ Chris Kiehl จะแสดงให้คุณเห็นถึงวิธีสร้างบอท Python ที่น่าสนใจมากซึ่งจะเล่นเกมง่ายๆ สำหรับคุณ บทช่วยสอนจะแสดงให้คุณเห็นถึงพลังของ Python อาจเป็นประโยชน์สำหรับการแก้ปัญหางานประจำวันที่สามารถใช้เพื่อจัดการคอมพิวเตอร์ของคุณได้
ภารกิจที่ 3: eBook ฟรี
หนังสือดีๆ เป็นตัวช่วยที่ดีเยี่ยมในการเรียนรู้สิ่งใหม่ๆ และ Python ก็มีชุมชนที่น่าทึ่งและเป็นมิตร ส่งผลให้มี eBook ฟรีให้เลือกมากมาย ด้านล่างนี้คุณจะเห็นรายชื่อหนังสือที่ดีที่สุด คุณสามารถดาวน์โหลดแต่ละเวอร์ชันอิเล็กทรอนิกส์ได้ฟรี หรือซื้อฉบับพิมพ์ (หรือบริจาค) หากคุณต้องการสนับสนุนผู้เขียน ฉันแน่ใจว่าพวกเขาจะขอบคุณมัน
เรียนรู้ Python ด้วยวิธีที่ยากลำบาก
แม้ว่าชื่อหนังสือจะชื่อว่า "The Not Easy Approach to Learning Python" แต่การเรียนรู้ Python ยังคงเป็นเรื่องง่ายอย่างที่ควรจะเป็น! ในหนังสือเล่มนี้ Zed A. Shaw จะให้คำแนะนำที่สมบูรณ์และละเอียดแก่คุณ พร้อมด้วยปัญหาและตัวอย่างเพื่อทดสอบทักษะการเขียนโปรแกรมของคุณ หนังสือเล่มนี้เขียนด้วยภาษาที่ไม่เป็นทางการ แต่อธิบายรายละเอียดมากมาย ดังนั้นคุณจะไม่มีปัญหาในการอ่านและผลลัพธ์จะตามมาในเร็วๆ นี้
Think Python: วิธีคิดแบบนักวิทยาศาสตร์คอมพิวเตอร์
คุณจะไม่พบแหล่งข้อมูลที่ดีไปกว่าเอกสารอย่างเป็นทางการของ python.org
ดังที่คำบรรยายระบุว่า "Thinking Like a Programmer" คุณจะพบเนื้อหาทางทฤษฎีมากมายที่นี่ ผู้เริ่มต้นอาจหงุดหงิดและพบว่าหนังสือเล่มนี้ยาก แต่เชื่อฉันเถอะ มันคุ้มค่าที่จะอ่าน เพราะคุณจะพบข้อมูลเกี่ยวกับทฤษฎีอัลกอริทึมและแนวคิดระดับสูง
ประดิษฐ์ด้วย Python
หากคุณสนใจในภาคปฏิบัติมากกว่า การสร้างเกมของคุณเองจะเป็นประสบการณ์ที่คุ้มค่าอย่างแท้จริง! ในหนังสือเล่มนี้ Al Sweigart ถือว่าคุณไม่มีความรู้เกี่ยวกับ Python มากนัก และจะช่วยคุณสร้างเกมให้กับคุณ แม้ว่าหนังสือเล่มนี้จะเกี่ยวกับการพัฒนาเกม แต่ก็ค่อนข้างเหมาะสำหรับผู้เริ่มต้นที่สมบูรณ์เช่นกัน ต่อมาในบทความนี้ ฉันได้กล่าวถึงหนังสือเล่มหนึ่งที่คล้ายกัน แต่ต้องใช้คำสั่ง Python ที่แข็งแกร่ง หากคุณรู้สึกว่าคุณรู้ภาษานั้นดี หนังสือเล่มอื่นจะเป็นแหล่งข้อมูลที่มากกว่าสำหรับคุณ
หนังสือจังโก้
หากคุณต้องการเรียนรู้การพัฒนาเว็บไซต์ใน Python คุณน่าจะใช้ Django Framework มากที่สุด คุณอาจไม่คุ้นเคยกับเฟรมเวิร์ก Django แต่คุณควรมีความเข้าใจเกี่ยวกับ Python เป็นอย่างดีจึงจะอ่านหนังสือเล่มนี้ได้ ข้อมูลในนั้นเป็นสิ่งที่ขาดไม่ได้สำหรับนักพัฒนาเว็บมือใหม่
หนังสือเกี่ยวกับไพธอน
หากหนังสือทั้งหมดที่กล่าวมาข้างต้นยังไม่เพียงพอหรือคุณสนใจหัวข้อใดหัวข้อหนึ่ง โปรดไปที่ลิงก์นี้ หนุ่มๆ จาก python.org ได้สร้างรายชื่อหนังสือมากมาย โดยจัดเรียงตามความซับซ้อนและหัวข้อ
ภารกิจที่ 4: ทำความรู้จักกับ StackOverflow
นักพัฒนาหลายพันรายประสบปัญหาเดียวกันกับที่คุณจะต้องเผชิญหน้า StackOverflow เป็นแหล่งข้อมูลที่ดีเยี่ยมที่นักพัฒนาสามารถค้นหาวิธีแก้ไขปัญหาของตนได้ เมื่อคุณพบข้อบกพร่องอื่นและไม่รู้ว่าจะแก้ไขอย่างไร ให้ค้นหาคำตอบใน StackOverflow เป็นไปได้มากว่าจะมีข้อมูลอยู่แล้วว่าคนอื่นแก้ไขปัญหาที่คล้ายกันได้อย่างไร
แต่ StackOverflow ไม่ใช่แค่มือใหม่ จุดบกพร่อง และปัญหาเท่านั้น ไซต์นี้เต็มไปด้วยคนฉลาดที่เต็มใจช่วยเหลือ เรียนรู้จากพวกเขา!
เทคนิคและเคล็ดลับส่วนใหญ่ที่คุณจะพบในที่นี้ไม่มีอยู่ในบทช่วยสอนใดๆ และจะมีประโยชน์มากสำหรับผู้ใช้ Python ขั้นสูงหรือระดับกลาง
ภารกิจที่ 5: โปรเจ็กต์ออยเลอร์
Project Euler (ออกเสียงว่า 'Oil-er' จำไว้เพื่อจะได้ไม่เสียหน้าในอนาคต) เป็นหนึ่งในเว็บไซต์โปรดของฉัน เมื่อคุณสร้างบัญชีแล้ว คุณสามารถเข้าร่วมและแก้ปัญหาประมาณ 400 รายการบนเว็บไซต์นี้ได้ แต่ละงานคือ ในความคิดของฉัน คณิตศาสตร์ 50 เปอร์เซ็นต์ การเขียนโปรแกรม 50 เปอร์เซ็นต์ เป็นแนวทางที่ถูกต้องที่สุดในการศึกษาแต่ละวิชาเหล่านี้
งานเริ่มต้นด้วยงานง่ายๆ เพื่อทดสอบระดับความรู้ภาษาของคุณ หลังจากนั้นความซับซ้อนจะเพิ่มขึ้น และในที่สุดก็จะเกิดปัญหาที่แม้แต่โปรแกรมเมอร์ที่มีประสบการณ์ก็ไม่สามารถแก้ไขได้ ในท้ายที่สุด คุณจะต้องค้นหาอัลกอริธึมที่มีประสิทธิภาพมากที่สุด ในกรณีที่คุณไม่มีเวลา ให้รอหลายชั่วโมงเพื่อคำนวณคำตอบที่ถูกต้อง
ไม่มีอะไรจะทำให้คุณเป็นโปรแกรมเมอร์ที่ดีกว่าได้เร็วไปกว่าการค้นหาวิธีแก้ไขปัญหา Project Euler ที่มีประสิทธิภาพมากที่สุด
เมื่อคุณจัดการเพื่อหาทางแก้ไขปัญหาอื่น หน้าฟอรั่มจะเปิดขึ้นสำหรับคุณ ซึ่งผู้คนจะหารือเกี่ยวกับวิธีแก้ปัญหาและแนวคิดร่วมกันเกี่ยวกับปัญหานี้ โซลูชันเหล่านี้ส่วนใหญ่จะอยู่ใน Python นี่เป็นกุญแจสำคัญที่จะช่วยให้คุณปรับปรุงความสามารถในการเขียนโปรแกรมของคุณได้อย่างมาก หากใครพบวิธีแก้ปัญหาที่เร็วกว่า อย่ากลัวที่จะใช้เวลาวิเคราะห์ เพื่อที่คุณจะได้เข้าใจจุดที่ต้องปรับปรุงใหม่ เมื่อเวลาผ่านไป คุณจะเริ่มเข้าใจเคล็ดลับทั้งหมดและทักษะภาษา Python ของคุณจะดีขึ้น ผลลัพธ์จะเกิดขึ้นอีกไม่นาน
นอกจากนี้ ยังมีบล็อกที่ให้ความรู้อีกมากมายที่คุณสามารถค้นหาวิธีแก้ไขปัญหา Python บน Project Euler ได้ หากคุณติดอยู่กับปัญหา ก็ไม่เป็นไรหากคุณดูวิธีแก้ปัญหาของนักพัฒนารายอื่น สิ่งที่สำคัญที่สุดคือการเรียนรู้สิ่งใหม่จากพวกเขา นี่คือบล็อกที่ฉันชื่นชอบสองบล็อก:
ภารกิจที่ 6: สร้างเกม
นอกเหนือจากการสร้างเกมของคุณเองแล้ว ยังมีบางสิ่งที่สนุกสนานได้
นอกเหนือจากการสร้างเกมของคุณเองแล้ว ยังมีบางสิ่งที่สนุกสนานได้ มันอาจจะค่อนข้างเป็นช่วงการเรียนรู้ที่สูงชัน แต่ก็คุ้มค่าอย่างแน่นอน PyGame เป็นไลบรารี่ที่มีชื่อเสียงที่สุดสำหรับการพัฒนาเกมใน Python และคุณจะไม่มีปัญหาในการค้นหาบทช่วยสอนฟรีเกี่ยวกับเรื่องนี้ ด้านล่างนี้เป็นสิ่งที่ดีที่สุด
เอกสาร PyGame อย่างเป็นทางการ
เช่นเดียวกับบทช่วยสอน Python นักพัฒนา PyGame ได้จัดทำเอกสาร - บทนำ เนื้อหาเต็มไปด้วยคำศัพท์ทางเทคนิค ในกรณีที่คุณต้องการเริ่มพัฒนาเกมทันที อย่างไรก็ตาม เช่นเคย เอกสารสำหรับนักพัฒนาจะเป็นแหล่งข้อมูลที่ดีที่สุด นั่นเป็นเหตุผลที่ฉันแนะนำไซต์นี้
ประดิษฐ์ด้วย Python (ด้วย PyGame)
e-book ฟรีจาก AI Sweigart จะแนะนำให้ผู้อ่านรู้จักกับไลบรารี PyGame แม้ว่าคุณจะไม่รู้อะไรเกี่ยวกับไลบรารีนี้เลย หลังจากอ่านแล้ว คุณจะสามารถสร้างเกมหนึ่งหรือสองเกมได้ เกมง่ายๆ จะเป็นรากฐานที่ยอดเยี่ยมสำหรับการสร้างโปรเจ็กต์ของคุณเอง หากคุณมีความปรารถนา Sweigart แสดงความคิดเห็นโดยละเอียดเกี่ยวกับโค้ดของเขาเพื่อช่วยในกระบวนการเรียนรู้
นี่คือเพลย์ลิสต์อื่นจาก TheNewBoston การแนะนำ PyGame ที่ยอดเยี่ยม คุณอาจไม่คุ้นเคยกับไลบรารีนี้อีกต่อไป การอ่านหนังสือ คุณจะเริ่มเข้าใจ PyGame แต่ไม่เหมือนกับ InventWithPython คุณจะไม่ได้สร้างเกมที่เต็มเปี่ยม
ภารกิจที่ 7: สำรวจไลบรารีและเครื่องมือยอดนิยม
Python เป็นภาษาอเนกประสงค์ที่คุณสามารถทำอะไรได้เกือบทุกอย่าง เรามีห้องสมุดและเครื่องมือมากมายให้เลือกใช้อย่างไม่สิ้นสุด ด้านล่างเป็นรายการยอดนิยม
ปิ๊ปปี้
หากคุณต้องการรวบรวมข้อมูลจากหน้า HTML... BeautifulSoup จะทำทุกอย่างที่คุณต้องการและประหยัดเวลาได้มาก
เมื่อทำสิ่งที่ต้องใช้ทรัพยากร CPU จำนวนมาก และคุณรู้สึกว่า Python กำลังใช้ทรัพยากรเหล่านั้น PyPy จะเข้ามาช่วยเหลือ PyPy เป็นคอมไพเลอร์ทางเลือกสำหรับ Python ที่สามารถเพิ่มความเร็วในการคำนวณได้
NumPy + SciPy
โดยปกติแล้วไลบรารีเหล่านี้จะใช้ร่วมกัน (SciPy ขึ้นอยู่กับ NumPy) หากต้องทำงานเกี่ยวกับการคำนวณทางคณิตศาสตร์หรือการวิจัยทางวิทยาศาสตร์ ห้องสมุดเหล่านี้จะทำหน้าที่เป็นผู้ช่วยที่ดีเยี่ยม NumPy และ SciPy ขยายฟังก์ชันทางคณิตศาสตร์และความสามารถของ Python ซึ่งส่งผลให้การแก้ปัญหางานต่างๆ เร็วขึ้นอย่างมาก
ซุปที่สวยงาม
BeautifulSoup สุดยอดจริงๆ การแยกวิเคราะห์ข้อมูลจากหน้า HTML ค่อนข้างน่าเบื่อและน่าหงุดหงิด BeautifulSoup จะทำทุกอย่างเพื่อคุณและช่วยคุณประหยัดเวลาได้มาก ฉันขอแนะนำห้องสมุดนี้เป็นอย่างยิ่ง มันสนุกที่ได้ร่วมงานด้วย
ไลบรารีรูปภาพหลาม
Image Processing Library (PIL) เหมาะสำหรับงานการประมวลผลภาพทุกประเภท หากมีความจำเป็นต้องโต้ตอบกับรูปภาพไม่ว่าด้วยวิธีใดก็ตาม PIL น่าจะช่วยให้งานนี้สำเร็จได้
จังโก้
ดังที่ฉันได้กล่าวไว้ในบทความนี้ หากคุณสนใจในการพัฒนาเว็บไซต์ คุณเลือก Django Framework นี่เป็นเฟรมเวิร์ก Python ที่ได้รับความนิยมมากที่สุดและมีทรัพยากรการฝึกอบรมจำนวนมาก
ความท้าทายที่ 8: มีส่วนร่วมในโครงการโอเพ่นซอร์ส
ด้วยความเข้าใจภาษาที่ดี ความสามารถในการอ่านและนำทางโค้ดของผู้อื่นถือเป็นทักษะที่จำเป็นและยังจะพิสูจน์ได้ว่าเป็นวิธีการเรียนรู้ที่ยอดเยี่ยมอีกด้วย
นี่คือสาเหตุที่โครงการโอเพ่นซอร์สได้รับความนิยมมาก เว็บไซต์ Github และ Bitbucket เป็นที่ที่คุณควรเริ่มต้น ไม่ต้องกังวล หากมีคนวิพากษ์วิจารณ์โค้ดของคุณ คุณไม่ควรมีส่วนร่วมในโครงการเหล่านั้นทันที คุณสามารถทำงานแยกสาขาของโปรเจ็กต์นี้ได้ตลอดเวลา ค้นหาว่ามันทำงานอย่างไร และทำทุกอย่างที่คุณต้องการ หากจู่ๆ ก็เจอสิ่งที่ต้องปรับปรุง เยี่ยมมาก! ทำสิ่งนี้และส่งการปรับปรุงของคุณ นั่นคือสิ่งที่โครงการโอเพ่นซอร์สมีไว้เพื่อ
บทสรุป
ฉันหวังว่าฉันจะสามารถจัดหาฐานที่เชื่อถือได้สำหรับการเรียนรู้ Python ให้กับคุณ ในกรณีที่ฉันลืมพูดถึงแหล่งข้อมูลใด ๆ โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่างเพื่อช่วยเหลือผู้ใช้รายอื่น!
ฉันถูกถามเป็นระยะเกี่ยวกับงานทดสอบในหัวข้อ Python ฉันตัดสินใจสรุปคำถามและเขียนไว้ในที่เดียว ฉันไม่ได้ใช้คำถามและงานเหล่านี้ในการสัมภาษณ์ แต่ฉันใช้ในการฝึกอบรม
ชนิดข้อมูล โครงสร้างพื้นฐาน
- วิธีรับรายการคุณลักษณะทั้งหมดของวัตถุ
- วิธีรับรายการคุณลักษณะสาธารณะทั้งหมดของวัตถุ
- วิธีรับรายการวิธีการบนวัตถุ
- ตัวแปร "เวทย์มนตร์" ใดที่เก็บเนื้อหาของความช่วยเหลือ
- มีสองสิ่งอันดับ โดยนำสิ่งอันดับสามมาต่อกันกับสองสิ่งแรก
- มีสองสิ่งอันดับ รับอันที่สามเป็นการรวมกันขององค์ประกอบเฉพาะของสองสิ่งอันดับแรก
- เหตุใดหากรายการมีการเปลี่ยนแปลงในวงวน ดังนั้น for x ใน lst[:] จะถูกใช้ ซึ่งหมายความว่า [:] ?
- มีสองรายการที่มีความยาวเท่ากัน รายการหนึ่งประกอบด้วยคีย์ และอีกรายการประกอบด้วยค่า ทำพจนานุกรม.
- มีสองรายการที่มีความยาวต่างกัน รายการหนึ่งประกอบด้วยคีย์ และอีกรายการประกอบด้วยค่า ทำพจนานุกรม. สำหรับคีย์ที่ไม่มีค่า ให้ใช้ไม่มีเป็นค่า ละเว้นค่าที่ไม่มีคีย์
- มีพจนานุกรม. พลิกกลับ เหล่านั้น. คีย์คู่: สลับค่า - มูลค่า: คีย์
- มีสตริงใน Unicode รับสตริง 8 บิตในการเข้ารหัส utf-8 และ cp1251
- มีสตริงในการเข้ารหัส cp1251 รับสตริง Unicode
ฟังก์ชั่น
- อาร์กิวเมนต์แรกอาจเป็นฟังก์ชันหรือรายการฟังก์ชัน
- อาร์กิวเมนต์ที่สองคือรายการอาร์กิวเมนต์ที่จะถูกส่งไปยังฟังก์ชัน
- สันนิษฐานว่าฟังก์ชันเหล่านี้เป็นฟังก์ชันของอาร์กิวเมนต์เดียว
เขียนฟังก์ชันที่สามารถส่งผ่านอาร์กิวเมนต์ได้ทั้งในรายการ/ทูเพิลหรือทีละรายการ ฟังก์ชันจะรวมอาร์กิวเมนต์ทั้งหมด
>>> ฉ(1, 2, 3) 6 >>> ฉ() 6 >>> ฉ((3, 5, 6)) 14 >>> ฉ(3, (5, 6)) 14
เขียนฟังก์ชันโรงงานที่จะส่งคืนฟังก์ชันบวกพร้อมอาร์กิวเมนต์
>>> add5 = การบวก(5) # ฟังก์ชันบวกจะคืนค่าฟังก์ชันบวกด้วย 5 >>> add5(3) # จะคืนค่า 3 + 5 = 8 8 >>> add5(8) # จะคืนค่า 8 + 5 = 13 13 >>> add8 = การบวก(8) >>> add8(2) # จะส่งคืน 2 + 8 = 10 10 >>> add8(4) # จะคืนค่า 4 + 8 = 12 12
เขียนตัวเลือกด้วยฟังก์ชันแลมบ์ดา "ภายใน" และไม่ระบุชื่อตามปกติ
เขียนโรงงานคล้ายกับขั้นตอนที่ 2 แต่ส่งคืนรายการฟังก์ชันดังกล่าว
>>> เพิ่มเติม = การเพิ่มช่วง (0, 5) # รายการฟังก์ชันบวกตั้งแต่ 0 ถึง 5 รวม
เหล่านั้น. คล้ายกัน
เขียนแผนที่แบบอะนาล็อก:
ในกรณีนี้ รายการ “ขยาย” จะเป็น: [(add0(1), add0(2), add0(3)), (add1(1), add1(2), add1(3)), (add2( 1), เพิ่ม2(2), เพิ่ม2(3))]
ตัววนซ้ำ
เขียนวงจรฟังก์ชันตัวสร้างที่จะส่งคืนตัววนซ้ำแบบวน
>>> i = iter() >>> c = รอบ(i) >>> c.next() 1 >>> c.next() 2 >>> c.next() 3 >>> c.next () 1
เขียนฟังก์ชันตัวสร้างลูกโซ่ที่วนซ้ำวัตถุที่ส่งผ่านตามลำดับ (ตัวเลขที่กำหนดเอง)
>>> i1 = iter() >>> i2 = iter() >>> c = chain(i1, i2) >>> c.next() 1 >>> c.next() 2 >>> c. ถัดไป() 3 >>> c.next() 4 >>> c.next() 5 >>> c.next() Traceback (การโทรล่าสุดครั้งล่าสุด): ... StopIteration
เขียน doctests สำหรับฟังก์ชันและตัววนซ้ำ
โมดูล
- เรามีโมดูลที่นำเข้า foo เราจะค้นหาเส้นทางทางกายภาพของไฟล์จากตำแหน่งที่นำเข้าได้อย่างไร
- จากโมดูล foo คุณนำเข้าโมดูล feedparser feedparser เวอร์ชัน X อยู่ในไดเร็กทอรีแพ็คเกจไซต์ทั้งระบบ เวอร์ชัน Y อยู่ถัดจากโมดูล foo มีการกำหนดตัวแปรสภาพแวดล้อม PYTHONPATH และ feedparser ก็อยู่ที่นั่นด้วย เวอร์ชัน Z จะใช้เวอร์ชันใด
- ฉันจะดูรายการไดเรกทอรีที่ Python ค้นหาโมดูลได้อย่างไร
- คุณมีโมดูล foo ภายในนั้นแถบโมดูลจะถูกนำเข้า ถัดจากโมดูล foo จะมีไฟล์ bar.py และ bar/__init__.py โมดูลใดที่จะใช้
- โครงสร้าง __name__ == "__main__" หมายความว่าอย่างไร และใช้เพื่ออะไร?
ชั้นเรียน
- เมื่อผ่าน **kwargs ให้ป้อนค่าที่เกี่ยวข้องเป็นแอตทริบิวต์
- ตรวจสอบให้แน่ใจว่าแอตทริบิวต์สาธารณะทั้งหมดแสดงขึ้นเมื่อพิมพ์
เขียนคลาสที่ดูเหมือนเป็นพจนานุกรม แต่จะอนุญาตให้เข้าถึงคีย์ในรูปแบบแอตทริบิวต์ได้
>>> x = DictAttr([("หนึ่ง", 1), ("สอง", 2), ("สาม", 3)]) >>> x ( "หนึ่ง": 1, "สาม": 3, "สอง": 2) >>> x["สาม"] 3 >>> x.get("หนึ่ง") 1 >>> x.get("ห้า", "หายไป") "หายไป" >>> x .one 1 >>> x.five Traceback (การโทรล่าสุดครั้งล่าสุด): ... AttributeError
จุดที่ 2 พร้อมภาวะแทรกซ้อน: เขียนคลาสพาเรนต์ XDictAttr เพื่อให้คีย์ของผู้สืบทอดถูกกำหนดแบบไดนามิกโดยการมีอยู่ของเมธอด get_
. >>> คลาส X(XDictAttr): ... def get_foo(self): ... return 5 ... def get_bar(self): ... return 12 >>> x = X(("one": 1 , "สอง": 2, "สาม": 3)) >>> x X: ( "หนึ่ง": 1, "สาม": 3, "สอง": 2) >>> x["หนึ่ง"] 1 > >> x.three 3 >>> x.bar 12 >>> x["foo"] 5 >>> x.get("foo", "missing") 5 >>> x.get("bzz", "หายไป") "หายไป"
เขียนคลาสที่ลงทะเบียนอินสแตนซ์และจัดให้มีอินเทอร์เฟซตัววนซ้ำเหนืออินสแตนซ์เหล่านั้น
>>> x = เร็ก() >>> x
>>> y = Reg() >>> y >>> z = เร็ก() >>> สำหรับฉันใน Reg: ... พิมพ์ i
เขียนคลาส Observable พื้นฐานที่จะอนุญาตให้ลูกหลาน:
เขียนการทดสอบหน่วยตามการทดสอบข้างต้น แต่ไม่จำกัดเพียงการทดสอบเหล่านี้
Metaclasses และคำอธิบาย
- ใช้ทำอะไร ได้รับอาร์กิวเมนต์ใด ควรส่งคืนอะไร: เมธอด __new__ และ __init__ คลาส
- __new__ และ __init__ ได้รับข้อโต้แย้งอะไรบ้างสำหรับ metaclass
ใช้ตัวอธิบายที่จับประเภทแอตทริบิวต์
>>> คลาส Image(object): ... height = Property(0) ... width = Property(0) ... path = Property("/tmp/") ... size = Property(0) > >> img = รูปภาพ() >>> img.height = 340 >>> img.height 340 >>> img.path = "/tmp/x00.jpeg" >>> img.path "/tmp/x00.jpeg >>>
ใช้คลาสฐาน (โดยใช้ metaclass) ที่รวบรวมประเภทแอตทริบิวต์
>>> คลาสรูปภาพ (วัตถุ): ... ความสูง = 0 ... ความกว้าง = 0 ... เส้นทาง = "/tmp" ... ขนาด = 0 >>> img = รูปภาพ () >>> img.height = 340 >>> img.height 340 >>> img.path = "/tmp/x00.jpeg" >>> img.path "/tmp/x00.jpeg" >>> img.path = 320 Traceback (ล่าสุด โทรครั้งล่าสุด): ... TypeError
ใช้คลาสฐาน (โดยใช้เมตาคลาส) และตัวอธิบายที่จะสร้าง SQL schema (ANSI SQL) สำหรับโมเดลตามคลาส:
>>> คลาส Image(Table): ... height = Integer() ... width = Integer() ... path = Str(128) >>> print Image.sql() CREATE TABLE image (height integer, จำนวนเต็มความกว้าง เส้นทาง varchar(128))
ไม่จำเป็นต้องมี NULL, PRIMARY KEY, FOREIGN KEY, CONSTRAINTS ก็เพียงพอที่จะนำไปใช้สองประเภท: Integer และ Str
- เป้าหมาย 1- ความช่วยเหลือเกี่ยวกับลิงก์ สื่อต่างๆ สำหรับผู้ที่กำลังวางแผนจะเรียนการเขียนโปรแกรมและใช้ Python เป็นภาษาแรก แสดงว่าไม่ยากอย่างที่คิด
- เป้าหมาย 2- รวบรวมลิงก์ไปยังเนื้อหาที่เป็นประโยชน์และน่าสนใจในหัวข้อนี้ในความคิดเห็น
0. ฉันจะทำสำเร็จหรือไม่?
ตั้งแต่แรกเริ่มฉันสงสัยว่าตัวเองจะทำอะไรได้มากกว่า Hello World หรือเปล่า สำหรับฉันดูเหมือนว่าการเขียนโปรแกรมเป็นเรื่องยากมากและมหัศจรรย์อย่างยิ่ง นอกจากนี้ยังมีงาน งานอดิเรก ครอบครัว ซึ่งจะทำให้เสียสมาธิจากการเรียนเต็มตัวฉันไม่ควรกลัวและไม่แนะนำให้คุณ การเขียนโปรแกรมอาจจะไม่กลายเป็นอาชีพหลักของฉันเลย แต่มันเป็นวิธีที่ดีในการสร้างสรรค์ นี่คือหมากรุกและอารยธรรมในขวดเดียว
ทุกอย่างง่ายกว่าที่คิดและน่าสนใจกว่ามาก
1. วรรณกรรม
มาร์ค ลัทซ์ “การเขียนโปรแกรม Python”- ขอแนะนำให้อ่านในฟอรัมและหลักสูตรต่างๆ สำหรับฉันดูเหมือนว่ามันละเอียดเกินไปและโหลดมากสำหรับมือใหม่ อ่านให้มาก เขียนโปรแกรมให้น้อย การอ่านหลังจากเชี่ยวชาญ Python อย่างน้อยจะมีประโยชน์มากกว่ามากมาร์ค ซัมเมอร์ฟิลด์ “การเขียนโปรแกรม Python 3”- แบบไดนามิกพร้อมตัวอย่างและงานที่ยอดเยี่ยม โดยไม่มีข้อมูลเชิงลึกที่ไม่จำเป็นซึ่งจะทำให้ทุกอย่างซับซ้อนตั้งแต่เริ่มต้นเท่านั้น ฉันแนะนำให้เริ่มด้วยหนังสือเล่มนี้ซึ่งจะช่วยให้คุณเข้าใจได้อย่างรวดเร็วโดยไม่ทำให้คุณลำบากใจ
หนังสืออื่นๆ ทั้งหมดกลับกลายเป็นว่ามีประโยชน์และให้ข้อมูลน้อยลง โดยทั่วไปแล้ว เป็นเรื่องยากที่จะหยิบและซื้อวรรณกรรมดีๆ เกี่ยวกับหัวข้อนี้ในร้านค้าหรือในเวอร์ชันดิจิทัล
2. สิ่งที่ต้องอ่านบนอินเทอร์เน็ต
http://pythonworld.ru/ - พูดถึงพื้นฐานของภาษาในภาษาที่เรียบง่ายและเข้าใจได้ ซึ่งมักใช้เป็นสูตรโกงหลังจากนั้นอีกสองเดือน ฉันสามารถสร้างแอปพลิเคชัน Django ตัวแรกได้ แต่สิ่งสำคัญคือตอนนี้ฉันมีความรู้เพียงพอสำหรับการพัฒนาและการเรียนรู้อย่างอิสระ สิ่งที่ยากที่สุดคือการมาถึงจุดนี้
อีกหนึ่งเดือนต่อมา ฉันได้เข้าร่วมสองโครงการบน GitHub และเข้าร่วมในโครงการเหล่านั้น แน่นอนว่าฉันยังคงแก้ปัญหาง่ายๆ แต่ได้รับคำแนะนำและการฝึกอบรมเป็นการตอบแทน
Tags: การฝึกอบรมหลาม, การฝึกอบรมการเขียนโปรแกรม
ผู้เรียน Python ทุกคนจำเป็นต้องเขียนโค้ดติดหนึบ เราขอเสนองานหลายอย่างให้คุณทราบ (ไม่ง่ายเกินไป (ยกเว้นงานแรก) และไม่ซับซ้อนเกินไป)
นอกจากนี้ยังมีพื้นที่เก็บข้อมูลสำหรับงานเหล่านี้พร้อมการทดสอบและวิธีแก้ปัญหาของฉัน (เพื่อทดสอบด้วยตัวเอง)
หากต้องการรันการทดสอบฟังก์ชันของคุณ วิธีที่ง่ายที่สุดคือเพิ่มโค้ดจากโฟลเดอร์การทดสอบที่ส่วนท้ายของไฟล์ฟังก์ชัน
และตอนนี้งานจริง:
การดำเนินการทางคณิตศาสตร์อย่างง่าย (1)
เขียนฟังก์ชันเลขคณิตที่รับอาร์กิวเมนต์ 3 ตัว โดย 2 ตัวแรกเป็นตัวเลข ส่วนตัวที่สามคือการดำเนินการที่ควรดำเนินการ หากอาร์กิวเมนต์ที่สามคือ + ให้เพิ่มเข้าไป ถ้า - แล้วลบ; * - คูณ; / - หาร (ทีละวินาที) มิฉะนั้น ให้ส่งคืนสตริง "การดำเนินการที่ไม่รู้จัก"
ปีอธิกสุรทิน (2)
เขียนฟังก์ชัน is_year_leap ที่รับ 1 อาร์กิวเมนต์ - ปี และส่งกลับค่า True หากปีนั้นเป็นปีอธิกสุรทิน และส่งคืนค่า False หากเป็นอย่างอื่น
สี่เหลี่ยมจัตุรัส (3)
เขียนฟังก์ชันสแควร์ที่รับ 1 อาร์กิวเมนต์ - ด้านข้างของสี่เหลี่ยมจัตุรัสและส่งคืนค่า 3 ค่า (โดยใช้ ): เส้นรอบวงของสี่เหลี่ยมจัตุรัส, พื้นที่ของสี่เหลี่ยมจัตุรัสและเส้นทแยงมุมของสี่เหลี่ยมจัตุรัส
ฤดูกาล (4)
เขียนฤดูกาลฟังก์ชันที่รับ 1 อาร์กิวเมนต์ - หมายเลขเดือน (ตั้งแต่ 1 ถึง 12) และส่งคืนฤดูกาลที่เป็นของเดือนนี้ (ฤดูหนาว ฤดูใบไม้ผลิ ฤดูร้อน หรือฤดูใบไม้ร่วง)
เงินฝากธนาคาร (5)
ผู้ใช้ฝากเงินรูเบิลเป็นระยะเวลาหลายปีที่ 10% ต่อปี (ทุกปีขนาดเงินฝากของเขาจะเพิ่มขึ้น 10% เงินนี้จะถูกเพิ่มเข้าไปในจำนวนเงินฝากและจะมีดอกเบี้ยในปีหน้าด้วย ).
เขียนฟังก์ชันแบงค์ที่รับอาร์กิวเมนต์ a และปี แล้วส่งคืนจำนวนเงินที่จะอยู่ในบัญชีของผู้ใช้
เลขเฉพาะ (6)
เขียนฟังก์ชัน is_prime ที่รับ 1 อาร์กิวเมนต์ - ตัวเลขตั้งแต่ 0 ถึง 1,000 และส่งคืนค่า True หากเป็นจำนวนเฉพาะ และส่งคืนค่า False หากเป็นอย่างอื่น
วันที่ถูกต้อง (7)
เขียนฟังก์ชันวันที่ที่รับอาร์กิวเมนต์ 3 รายการ ได้แก่ วัน เดือน และปี ให้คืนค่า True หากวันที่ดังกล่าวอยู่ในปฏิทินของเรา และคืนค่าเป็น False หากเป็นอย่างอื่น
การเข้ารหัส XOR (8)
เขียนฟังก์ชัน XOR_cipher ที่รับ 2 อาร์กิวเมนต์: สตริงที่จะเข้ารหัสและคีย์การเข้ารหัส ซึ่งจะส่งคืนสตริงที่เข้ารหัสโดย XOR โดยส่งอักขระของสตริงคีย์ เขียนฟังก์ชัน XOR_uncipher ซึ่งกู้คืนสตริงดั้งเดิมโดยใช้สตริงที่เข้ารหัสและคีย์
เตรียมสัมภาษณ์ตำแหน่ง Python Developer
วัสดุที่ใช้ในการเตรียมการ: คู่มือสำคัญในการสัมภาษณ์ Python, ต้องมีคำถามสัมภาษณ์ Python, คำถามสัมภาษณ์ Python ที่จำเป็น 15 ข้อ, คำถามและคำตอบในการสัมภาษณ์ Python
ทุกวันนี้ จำนวนโปรแกรมเมอร์ Python ยังคงเพิ่มขึ้น แต่จำนวนงานสำหรับพวกเขาไม่ได้เติบโตอย่างรวดเร็วนัก นักพัฒนาสมัยใหม่จำเป็นต้องแข่งขันเพื่อที่จะได้ตำแหน่งที่ต้องการ เราได้เตรียมบทความที่มีหัวข้อและคำถามที่นายจ้างอาจหยิบยกขึ้นในระหว่างการสัมภาษณ์ และเสริมด้วยคำอธิบายเล็กๆ น้อยๆ โดยพื้นฐานแล้ว นี่คือปัญหาการเขียนโปรแกรม Python พร้อมวิธีแก้ไข เนื้อหานี้จะเป็นประโยชน์สำหรับผู้ที่ทบทวนต่อไป และจะช่วยให้ผู้เริ่มต้นรู้ว่าควรก้าวแรกไปที่ไหนและสิ่งที่ต้องใส่ใจ คิดว่ามันเป็นประภาคารชนิดหนึ่ง
การทำงานกับรายการ
นิพจน์ Lambda, ตัวสร้างรายการ และนิพจน์ตัวสร้าง
นิพจน์แลมบ์ดา- วิธีทางลัดสำหรับการสร้างฟังก์ชันที่ไม่ระบุชื่อบรรทัดเดียว ความเรียบง่ายบ่อยครั้ง (แต่ไม่เสมอไป) ทำให้โค้ดสะอาดขึ้นและอ่านได้ง่ายกว่าการประกาศฟังก์ชันแบบคลาสสิก ในทางกลับกัน ความเรียบง่ายแบบเดียวกันจะจำกัดความเป็นไปได้และพื้นที่ของการประยุกต์ใช้นิพจน์แลมบ์ดา
เครื่องกำเนิดรายการจัดเตรียมไวยากรณ์ที่กระชับสำหรับการสร้างรายการ ใช้เพื่อสร้างรายการที่แต่ละองค์ประกอบเป็นผลมาจากการดำเนินการบางอย่างกับองค์ประกอบของลำดับหรือตัววนซ้ำอื่น ตัวสร้างรายการสามารถใช้เพื่อสร้างลำดับย่อยขององค์ประกอบเหล่านั้นที่สมาชิกตรงตามเงื่อนไขที่กำหนด ตัวสร้างรายการใน Python เป็นทางเลือกที่ไม่เหมือนใครสำหรับฟังก์ชัน map() และ filter() ในตัว
นิพจน์ Lambda พร้อมด้วยฟังก์ชัน map() และ filter() และตัวสร้างรายการจะคล้ายกัน ดังนั้นการเลือกหนึ่งในเครื่องมือเหล่านี้จึงขึ้นอยู่กับอัตนัยและเป็นกรณีไป แต่ควรสังเกตว่าตัวสร้างรายการเร็วกว่าเล็กน้อย - การเรียกใช้ฟังก์ชันแลมบ์ดาจะสร้างเฟรมสแต็กใหม่
ตัวสร้างนิพจน์มีลักษณะทางวากยสัมพันธ์และการใช้งานคล้ายกับตัวสร้างรายการ แต่มีความแตกต่างที่สำคัญระหว่างกลไกและขอบเขตการใช้งาน การวนซ้ำนิพจน์ตัวสร้างหรือตัวสร้างรายการจะทำทุกสิ่งเหมือนกัน แต่ตัวสร้างรายการจะสร้างรายการทั้งหมดในหน่วยความจำก่อน ในขณะที่นิพจน์ตัวสร้างจะสร้างองค์ประกอบทันทีตามต้องการ นิพจน์ตัวสร้างสามารถใช้ในลำดับจำนวนมากหรือไม่จำกัดก็ได้ และการสร้างค่าตามความต้องการช่วยเพิ่มประสิทธิภาพและลดการใช้หน่วยความจำ อย่างไรก็ตาม ควรสังเกตว่าวิธีการรายการมาตรฐานของ Python สามารถใช้กับเอาต์พุตของตัวสร้างได้ แต่ไม่สามารถใช้กับตัวสร้างเองได้
อะไรคือความแตกต่างระหว่างรายการและทูเพิล?
ข้อแตกต่างหลัก: รายการสามารถเปลี่ยนแปลงได้ แต่ทูเพิลไม่สามารถทำได้ การทำงานกับสิ่งอันดับนั้นเร็วกว่าการใช้รายการ หากคุณต้องการกำหนดชุดของค่าคงที่ และสิ่งที่คุณต้องทำคือทำซ้ำองค์ประกอบต่างๆ ของมัน การใช้ทูเพิลแทนการใช้รายการจะเหมาะสมกว่า สิ่งทูเปิลยังสามารถทำหน้าที่เป็นคีย์สำหรับพจนานุกรมได้ ไม่เหมือนรายการ
ผู้ที่มีคุณสมบัติขั้นสูงสุดจะกล่าวว่าสิ่งอันดับนั้นมีความหลากหลายและการใช้งานก็คล้ายคลึงกับการใช้ struct ในภาษาการเขียนโปรแกรม C
การดีบักโค้ดและการทดสอบ
คุณใช้แนวทางใดในการทดสอบหน่วยใน Python
คำตอบพื้นฐานสำหรับคำถามนี้เกี่ยวข้องกับการใช้เฟรมเวิร์ก Python - unittest
Unittest รองรับการทดสอบอัตโนมัติ แบ่งปันโค้ดเพื่อตั้งค่าและทำการทดสอบให้เสร็จสิ้น การจัดกลุ่มการทดสอบ และอนุญาตให้แยกการทดสอบออกจากกรอบการรายงาน โมดูล unittest มีคลาสที่ทำให้ง่ายต่อการสนับสนุนคุณสมบัติเหล่านี้สำหรับชุดทดสอบ
คุณอาจถูกขอให้อธิบายองค์ประกอบสำคัญของโครงสร้าง unittest กล่าวคือ:
- ม้านั่งทดสอบ (อุปกรณ์ทดสอบ);
- กรณีทดสอบ;
- ชุดทดสอบ;
- นักวิ่งทดสอบ
ตัววนซ้ำ
ตัววนซ้ำคืออะไร?
Iterator เป็นอินเทอร์เฟซที่ให้การเข้าถึงและการนำทางผ่านองค์ประกอบของคอลเลกชัน (อาร์เรย์หรือคอนเทนเนอร์) ตัววนซ้ำอาจมีชื่อสามัญที่แตกต่างกันในระบบที่ต่างกัน ในแง่ระบบการจัดการฐานข้อมูล ตัววนซ้ำจะเรียกว่าเคอร์เซอร์ ในกรณีที่ง่ายที่สุด ตัววนซ้ำในภาษาระดับต่ำคือตัวชี้
ความแตกต่างระหว่างตัววนซ้ำและตัวสร้างคืออะไร?
ข้อกำหนดเหล่านี้เกี่ยวข้องกันอย่างใกล้ชิด (ตัวสร้างใด ๆ เป็นตัววนซ้ำ) มักจะสับสน ซึ่งบางครั้งก็นำไปสู่ความเข้าใจผิด ตัววนซ้ำเป็นแนวคิดทั่วไป นี่คือออบเจ็กต์ที่มีการกำหนดสองวิธี: __next__ และ __iter__ ในทางกลับกัน ตัวสร้างเป็นตัววนซ้ำ แต่ไม่ใช่วิธีอื่น สามารถรับตัวสร้างได้โดยใช้คีย์เวิร์ด Yield ในส่วนเนื้อหาของฟังก์ชัน
Def กำลังสอง (เริ่ม, หยุด): สำหรับ i อยู่ในช่วง (เริ่ม, หยุด): ให้ผลผลิต i * i ตัวสร้าง = กำลังสอง (a, b)
กิล
แนวคิดของ GIL คือโปรเซสเซอร์สามารถดำเนินการได้ครั้งละหนึ่งเธรดเท่านั้น สิ่งนี้ทำเพื่อไม่ให้มีการแข่งขันระหว่างเธรดสำหรับตัวแปรแต่ละตัว เธรดที่ดำเนินการสามารถเข้าถึงสภาพแวดล้อมทั้งหมดได้ คุณสมบัติการใช้งานเธรดใน Python นี้ช่วยลดความยุ่งยากในการทำงานกับเธรดอย่างมากและให้ความปลอดภัยของเธรด
ผ่านการโต้แย้ง
วัตถุที่ไม่เปลี่ยนรูปถูกส่งผ่านอย่างไร
วัตถุที่ไม่เปลี่ยนรูปจะถูกส่งผ่านตามค่า วัตถุ เช่น จำนวนเต็มและสตริง จะถูกส่งผ่านเป็นการอ้างอิงวัตถุ แทนที่จะเป็นสำเนาของวัตถุ
วัตถุที่ไม่แน่นอนถูกส่งผ่านอย่างไร
วัตถุที่ไม่แน่นอนจะถูกส่งผ่าน "โดยตัวชี้" ออบเจ็กต์ เช่น รายการ และพจนานุกรม จะถูกส่งผ่านเป็นการอ้างอิงออบเจ็กต์ ซึ่งคล้ายกับวิธีการส่งพอยน์เตอร์ไปยังอาร์เรย์ในภาษา C มาก - วัตถุที่ไม่แน่นอนสามารถแก้ไขได้โดยตรงภายในฟังก์ชัน เช่นเดียวกับอาร์เรย์ใน C
>>> def f(a): # ชื่อ a ถูกกำหนดให้กับวัตถุที่ส่งผ่าน... a = 99 # เฉพาะตัวแปรท้องถิ่นเท่านั้นที่มีการเปลี่ยนแปลง... >>> b = 88 >>> f(b)# เริ่มแรก ชื่อ a และ b อ้างอิงถึงหมายเลขเดียวกัน 88 >>> print(b) # ตัวแปร b ไม่มีการเปลี่ยนแปลง 88
ในตัวอย่างนี้ เมื่อเรียกใช้ฟังก์ชัน f(b) ตัวแปร a จะถูกกำหนดให้กับออบเจ็กต์ 88 แต่มีตัวแปร a อยู่ภายในฟังก์ชันที่ถูกเรียกเท่านั้น การเปลี่ยนตัวแปร a ภายในฟังก์ชันจะไม่ส่งผลกระทบต่อสภาพแวดล้อมที่มีการเรียกใช้ฟังก์ชัน - เพียงแค่สร้างวัตถุใหม่ทั้งหมด a ในเวลาที่มีการโทร
สิ่งที่จะออกมาหลังจากการเรียกครั้งที่สองเพื่อผนวก () ในโค้ดด้านล่าง?
>>> def ผนวก(list=): ... # ผนวกความยาวของรายการเข้ากับรายการ... list.append(len(list)) ... return list ... >>> ผนวก([" a"," b"]) ["a", "b", 2] >>> >>> append() # การโทรโดยไม่มีอาร์กิวเมนต์ใช้ค่าเริ่มต้นของ list >>> >>> append() # แต่ จะเกิดอะไรขึ้นเมื่อมีการเรียก append อีกครั้งโดยไม่มีข้อโต้แย้ง?เมื่อค่าเริ่มต้นสำหรับอาร์กิวเมนต์ของฟังก์ชันคือนิพจน์ จะมีการประเมินเพียงครั้งเดียว แทนที่จะประเมินทุกครั้งเมื่อมีการเรียกใช้ฟังก์ชัน ดังนั้น หลังจากที่รายการอาร์กิวเมนต์ได้รับการเตรียมใช้งานเป็นอาร์เรย์ว่างแล้ว การเรียกใช้ฟังก์ชันในภายหลังโดยไม่มีอาร์กิวเมนต์จะยังคงใช้อาร์เรย์เดิมที่เตรียมใช้งานไว้แต่แรก
>>> ผนวก() # การโทรครั้งแรกโดยไม่มีอาร์กิวเมนต์จะใช้ค่าเริ่มต้น >>> ผนวก() # แต่แล้ว... >>> ผนวก() # การโทรต่อเนื่อง ขยายรายการเริ่มต้น >>> ผนวก() # และ ดำเนินต่อไป...
ฉันจะเปลี่ยนการประยุกต์ใช้วิธีการผนวกในคำถามก่อนหน้าเพื่อหลีกเลี่ยงพฤติกรรมที่ไม่พึงประสงค์ที่อธิบายไว้ได้อย่างไร
มีการดำเนินการทางเลือกอื่นของวิธีการผนวกที่จะแก้ปัญหา:
>>> def append(list=None): ... if list is None: list = # เพิ่มความยาวของรายการ... list.append(len(list)) return list ... >>> append( ) >> >ผนวก()
คำถามนอกบางหมวดหมู่
คุณจะสลับค่าของตัวแปรสองตัวภายในสตริงใน Python ได้อย่างไร?
ลองดูตัวอย่างง่ายๆ:
>>> x = "X" >>> y = "Y"
ภาษาโปรแกรมอื่นๆ หลายภาษาต้องการให้คุณทำสิ่งนี้เมื่อแทนที่ค่า X และ Y:
>>> tmp = x >>> x = y >>> y = tmp >>> x, y ("Y", "X")
แต่ใน Python มีตัวเลือกให้ทำสิ่งนี้ด้วยโค้ดหนึ่งบรรทัดดังนี้:
>>> x,y = y,x >>> x,y ("ใช่", "X")
ข้อความสุดท้ายด้านล่างนี้จะแสดงผลอะไร
>>> flist = >>> for i in range(3): ... flist.append(lambda: i) ... >>> # สิ่งที่จะออกมา?ในการปิดใดๆ ใน Python ตัวแปรจะเชื่อมโยงกันตามชื่อ ดังนั้นบรรทัดโค้ดด้านบนจะแสดงผลดังนี้:
>>> flist = >>> สำหรับฉันอยู่ในช่วง (3): ... flist.append(lambda i = i: i) ... >>>
จุดประสงค์ของคำว่า "ตนเอง" คืออะไร?
คำหลัก self เป็นตัวแปรที่อ้างถึงอินสแตนซ์ของวัตถุ เมื่อคลาสถูกสร้างขึ้น จะไม่มีการอ้างอิงอย่างชัดเจนถึงออบเจ็กต์ประเภทคลาสเดียวกัน ดังนั้นเพื่ออ้างถึงคลาสหรืออ็อบเจ็กต์ปัจจุบัน Python จะใช้คีย์เวิร์ด self
ผู้ใช้คลาส: def __init__(self): self.name = "Ivan Ivanov" self.age = 16 user_obj = User() user_obj.name # self.name มี "Ivan Ivanov" เป็นค่า
วัตถุประสงค์ของคำหลัก "yield" คืออะไร?
คีย์เวิร์ด Yield สามารถเปลี่ยนฟังก์ชันใดๆ ให้เป็นเครื่องกำเนิดไฟฟ้าได้ มันทำงานคล้ายกับคำสั่ง return โดยมีความแตกต่างที่คีย์เวิร์ดจะส่งคืนอ็อบเจ็กต์ตัวสร้าง ฟังก์ชันยังสามารถเรียกคีย์เวิร์ดผลตอบแทนได้หลายครั้ง
Def testgen(ดัชนี): วันธรรมดา = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"] ให้ผลผลิตวันธรรมดาให้ผลผลิตวันธรรมดา = testgen (0) พิมพ์ถัดไป ( วัน) ถัดไป (วัน) #output: อาทิตย์ จันทร์
__init__.py คืออะไร จะนำเข้าคลาสจากไดเร็กทอรีอื่นได้อย่างไร?
Init__.py ส่วนใหญ่จะใช้เพื่อเริ่มต้นแพ็คเกจ Python
ไฟล์ __init__.py ในไดเร็กทอรี lstm_m จะบอกล่าม Python ว่าไดเร็กทอรีนี้ควรถือเป็นแพ็คเกจ Python
จะนำเข้าคลาสจากไดเร็กทอรีอื่นได้อย่างไร?
โดยปกติ __init__.py จะเป็นไฟล์เปล่า และถ้าเราจำเป็นต้องใช้ lstm.py ในไฟล์ run.py ก็จะต้องนำเข้าดังนี้:
จาก lstm_m นำเข้า lstm
นอกจากนี้ ภายในโฟลเดอร์โมดูลควรมีไฟล์ชื่อ __init__.py สำหรับการนำเข้า
Python มีประเภทบิวท์อินอะไรบ้าง?
มีประเภท Python ในตัวที่ไม่เปลี่ยนรูปและไม่เปลี่ยนรูป
เปลี่ยนแปลงได้:
- รายการ;
- ฝูงชน;
- พจนานุกรม
ไม่เปลี่ยนรูป:
- สตริง;
- สิ่งอันดับ;
- ตัวเลข
โปรดจำไว้ว่ามีเพียงประเภทหลักเท่านั้นที่แสดงไว้ด้านบน ในความเป็นจริงมีมากกว่าหกคน
docstring ใน Python คืออะไร?
สตริงเอกสาร Python (docstring) เป็นวิธีจัดทำเอกสารฟังก์ชัน โมดูล และคลาส มาตรฐานการออกแบบอยู่บนเว็บไซต์อย่างเป็นทางการ
ฉันจะแปลงตัวเลขเป็นสตริงได้อย่างไร
หากต้องการแปลงตัวเลขเป็นสตริง โดยทั่วไปคุณจะใช้ฟังก์ชัน str() ในตัว แม้ว่าจะมีวิธีอื่นๆ เช่น "(0:d).format(number) และ "%d"%number หากคุณต้องการแปลงเลขฐานสิบเป็นฐานแปด (oct - octal) หรือเลขฐานสิบหก (hex - hexadecimal) ให้ใช้ฟังก์ชัน oct() หรือ hex() ที่มีอยู่แล้วภายในตามลำดับ
Xrange และ Range แตกต่างกันอย่างไร?
ฟังก์ชัน xrange() ส่งคืนออบเจ็กต์ xrange ในขณะที่ range() ส่งคืนรายการและใช้จำนวนหน่วยความจำเท่ากัน โดยไม่คำนึงถึงขนาดของฟังก์ชัน
ฉันจะดูวิธีการหรือคุณลักษณะของวัตถุได้อย่างไร
คำสั่ง dir(x) ส่งคืนรายการชื่อแอ็ตทริบิวต์ที่เรียงลำดับแล้วสำหรับอ็อบเจ็กต์ใดๆ ที่ส่งผ่านไป หากไม่มีการระบุวัตถุ dir() จะส่งกลับชื่อในขอบเขตปัจจุบัน
นอกจากนี้
หากคุณพูดภาษาอังกฤษ เราขอแนะนำให้ทำแบบทดสอบออนไลน์เพื่อทดสอบความรู้ของคุณก่อนการสัมภาษณ์
แหล่งรวมสื่อการเรียนรู้ Python จากเรา: , . สั้นๆ เช่นกัน อย่าลืมแก้ไขปัญหา: คุณสามารถดำเนินการได้ที่นี่
บทสรุป
คำถามและเคล็ดลับที่นำเสนอในบทความนี้อาจเป็นตัวช่วยที่มีค่ามากในการเตรียมผู้สมัครสำหรับการสัมภาษณ์ เราหวังว่านักพัฒนาจะพบว่าสิ่งเหล่านี้มีประโยชน์สำหรับการทดสอบความรู้ของตนเองก่อนที่จะพบปะกับนายจ้าง แต่เราไม่ควรลืมว่าคำถามทั้งหมดที่นำเสนอข้างต้นเป็นหนึ่งในเครื่องมือหลายอย่างในการเลือกผู้สมัครเข้ารับตำแหน่งโดยเป็นส่วนหนึ่งของกลยุทธ์เฉพาะ จัดเตรียมอย่างรอบคอบและทั่วถึง ขอให้โชคดี!