สารบัญ[ซ่อน][แสดง]
การบรรยายนี้จะครอบคลุมรอบ ๆ โมดูลและแพ็คเกจใน Python
เป็นวิธีการจัดระเบียบโค้ดของคุณในรูปแบบของไฟล์ และมีความสำคัญมาก หากคุณต้องการสร้างเว็บแอปพลิเคชันด้วย Python
โมดูล
โมดูลใน Python นั้นเป็นไฟล์ที่มีรหัสหลามที่เราใช้ในการจัดระเบียบรหัสของเราลงในไฟล์ คิดว่ามันเหมือนส่วนต่างๆ ในซูเปอร์มาร์เก็ต เมื่อคุณไปซุปเปอร์มาร์เก็ต จะมีส่วนต่างๆ สำหรับผลไม้ ผัก ผลิตภัณฑ์ทำความสะอาด ฯลฯ คุณไม่เห็นส่วนใดที่มีผลิตภัณฑ์ทั้งหมด
เป็นแนวคิดเดียวกันในการเขียนโปรแกรม แทนที่จะเขียนโค้ดทั้งหมดที่มีฟังก์ชันและคลาสทั้งหมดใน main.py เราแบ่งโค้ดของเราออกเป็นหลายไฟล์ แต่ละไฟล์จะเรียกว่าโมดูล ด้วยเหตุนี้ โค้ดของเราจึงไม่เพียงจัดระเบียบและจัดโครงสร้างได้ดีขึ้นเท่านั้น แต่เรายังสามารถนำโค้ดของเรากลับมาใช้ใหม่ได้อีกด้วย ลองดูผ่านตัวอย่าง
มานิยามฟังก์ชันสองอย่างสำหรับการแปลงน้ำหนักจากปอนด์เป็นกิโลกรัม และในทางกลับกัน
def lbs_to_kg(weight):
return weight * 0.45
def kg_to_lbs(weight):
return weight / 0.45
ตอนนี้ เราสามารถนำสองฟังก์ชันนี้มาใส่ในโมดูลแยกต่างหากที่เรียกว่า "ตัวแปลง" จากนั้นจึงนำเข้าไปยังโปรแกรมใดก็ได้ที่ต้องการฟังก์ชันตัวแปลงเหล่านี้ ให้ฉันแสดงวิธีการทำสิ่งนี้
มาเปิดแผงโครงการของเราแล้วคลิกขวาที่โครงการและเพิ่มไฟล์ใหม่ เราจะเรียกไฟล์นี้ว่า “Converters.py”
ตอนนี้คัดลอกโค้ดจากไฟล์เริ่มต้นแล้ววางลงใน "Converters.py"
ด้วยเหตุนี้ เราจึงได้ทำความสะอาดโมดูลหลักของเราและไม่ได้เต็มไปด้วยฟังก์ชันต่างๆ เมื่อเราเขียนฟังก์ชันเพิ่มเติมด้วยคลาส เราใส่ฟังก์ชันเหล่านั้นลงในโมดูลที่เกี่ยวข้อง โมดูลควรมีฟังก์ชันและคลาสที่เกี่ยวข้องทั้งหมด ตอนนี้ เราต้องการนำเข้าโมดูลตัวแปลงไปยังโมดูลแอปของเรา เมื่อต้องการทำเช่นนี้ เขียน import converters
ที่ด้านบนโดยไม่มีนามสกุล “.py”
เราสามารถเข้าถึงสมาชิกของโมดูลโดยใช้ตัวดำเนินการจุดคล้ายกับวิธีการ
ลองแปลง 70 กิโลกรัมเป็นปอนด์:
นอกจากนี้ยังมีไวยากรณ์อื่นสำหรับการนำเข้าโมดูล แทนที่จะนำเข้าทั้งโมดูล เราสามารถนำเข้าฟังก์ชันเฉพาะจากโมดูลนั้นได้ พิมพ์ .ได้ from Converters import
และกด “control + space เพื่อแสดงรายการฟังก์ชั่นที่มี ด้วยวิธีนี้ เราสามารถเรียกฟังก์ชันนี้ได้โดยตรง
การออกกำลังกาย
นี่คือการออกกำลังกายของคุณ
นี้เกี่ยวข้องกับแบบฝึกหัดจากการบรรยายที่เราพูดถึง “สำหรับลูป” ที่เราเขียนโปรแกรมหาจำนวนที่มากที่สุดจากรายการ
numbers = [8, 3, 6, 10, 5]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)
รหัสนี้ไม่มีองค์กรในขณะนี้ เราไม่มีฟังก์ชันหรือโมดูลใดๆ และโปรแกรมถูกเขียนเป็นไฟล์เดียว เป็นเรื่องปกติสำหรับโปรแกรมขนาดเล็ก แต่เมื่อโปรแกรมของคุณเติบโตขึ้น คุณต้องจัดระเบียบโค้ดของคุณให้เป็นคลาสและโมดูลอย่างเหมาะสม ดังนั้น ส่วนหนึ่งของแบบฝึกหัดนี้ ฉันอยากให้คุณเขียนฟังก์ชัน เรียกมันว่า find_max
. ฟังก์ชันนี้ควรรับรายการและส่งกลับจำนวนที่มากที่สุดในรายการนั้น หลังจากนั้นให้นำฟังก์ชันนี้ไปไว้ในโมดูลที่แยกจากกัน แยกจากที่นี่และใส่ไว้ในโมดูลที่เรียกว่า utils
. โมดูลนี้ควรมีฟังก์ชันยูทิลิตี้มากมาย นำเข้า utils
โมดูลลงในโมดูลปัจจุบันและโทร find_max
การทำงาน. สุดท้าย รับผลลัพธ์และพิมพ์บนเทอร์มินัล
แบบฝึกหัดนี้ค่อนข้างท้าทายแต่ทำได้ง่าย
Solution
เริ่มต้นด้วยการกำหนดฟังก์ชัน find_max
และเพิ่มพารามิเตอร์ที่เรียกว่าตัวเลข ภายในฟังก์ชันนี้ ให้เขียนอัลกอริทึมเพื่อค้นหาจำนวนที่มากที่สุดในรายการ
def find_max(numbers):
max = numbers[0]
for number in numbers:
if number > max:
max = number
return max
บันทึกรหัสนี้ในไฟล์ “utils.py” เป็นโมดูล
กลับไปที่โปรแกรมหลักของเรา เพียงนำเข้าโมดูลโดยใช้รูปแบบใดรูปแบบหนึ่งจากสองรูปแบบ และดำเนินการตามตรรกะ
สิ่งหนึ่งที่ฉันต้องให้ความสนใจคือความพ่ายแพ้ max
. เหตุผลก็คือ max
เป็นฟังก์ชันในตัวใน Python และเรากำลังกำหนดมันใหม่ นี่เป็นคำเตือนจาก Python คอมไพเลอร์ ที่เราไม่สามารถใช้ max เป็นฟังก์ชันในตัวได้อีกต่อไป
โมดูลในตัวใน Python
Python มาพร้อมกับไลบรารีมาตรฐานที่ประกอบด้วยโมดูลต่างๆ สำหรับงานทั่วไป เช่น การส่งอีเมล การทำงานกับวันที่และเวลา การสร้างค่าสุ่มและรหัสผ่าน และอื่นๆ มีโมดูลจำนวนมากที่สร้างไว้แล้วใน Python ซึ่งหมายความว่ามีฟังก์ชันมากมายที่เราสามารถนำมาใช้ซ้ำได้ คุณสามารถหาโมดูลเหล่านี้ได้ โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม.
แบบรวดเร็ว
แพ็คเกจเป็นอีกวิธีหนึ่งในการจัดระเบียบโค้ดของเราที่ด้านบนของโมดูล โปรเจ็กต์จริงสามารถมีโมดูลได้หลายร้อยหรือหลายพันโมดูล และเมื่อเวลาผ่านไป ไดเร็กทอรีของเราก็เต็มไปด้วยไฟล์จำนวนมาก ดังนั้น วิธีที่ดีกว่าคือการจัดระเบียบโมดูลที่เกี่ยวข้องภายในแพ็คเกจ ซึ่งทำให้แพ็คเกจเป็นคอนเทนเนอร์สำหรับหลายโมดูล
ไดเร็กทอรีใหม่จะถูกเพิ่มไปยังโปรเจ็กต์และโมดูลที่เกี่ยวข้องทั้งหมดจะถูกเพิ่มไปยังไดเร็กทอรีนั้น ตัวอย่างเช่น ลองนึกถึงห้างสรรพสินค้า มีแผนกต่างๆ สำหรับเสื้อผ้าผู้ชาย ผู้หญิง และเด็กในห้างสรรพสินค้าที่เป็นเหมือนบรรจุภัณฑ์ แต่ละส่วนจะมีพื้นที่ที่แตกต่างกันสำหรับผลิตภัณฑ์ประเภทต่างๆ เช่น รองเท้า เสื้อยืด และแจ็คเก็ต คิดว่าสิ่งเหล่านี้เป็นโมดูล
มาดูวิธีสร้างและใช้งานแพ็คเกจใน Python กัน
ขั้นแรก เพิ่มไดเร็กทอรีใหม่จากแผงโครงการ ให้เรียกว่า “อีคอมเมิร์ซ” แพ็คเกจนี้จะมีโมดูลทั้งหมดที่เกี่ยวข้องกับแอปพลิเคชันอีคอมเมิร์ซ
มันยังคงเป็นไดเร็กทอรีว่างและเพื่อแปลงเป็นแพ็คเกจ เราจำเป็นต้องสร้างไฟล์พิเศษในนั้น เพิ่มไฟล์ python ใหม่ในไดเร็กทอรีนี้และตั้งชื่อไฟล์นั้นว่า "__init__" เป็นธรรมเนียมปฏิบัติพิเศษใน Python และเมื่อล่าม Python เห็นไฟล์ที่มีชื่อนี้ในไดเร็กทอรี จะถือว่าไดเร็กทอรีนี้เป็นแพ็คเกจ
เรายังมีวิธีการอื่นและกระชับเพื่อสร้างแพ็คเกจ เพียงคลิกขวาที่แผงโครงการและสร้างแพ็คเกจ Python จากรายการ ตั้งชื่อมันว่า "eCommerce" แค่นั้นเอง มันจะสร้างไดเร็กทอรีโดยอัตโนมัติด้วยไฟล์ Python ชื่อ “__init__”
ตอนนี้ มาสร้างโมดูลในแพ็คเกจและตั้งชื่อมันว่า "การจัดส่ง" ในโมดูลนี้ มาสร้างฟังก์ชันง่ายๆ สำหรับคำนวณต้นทุนการจัดส่งกัน
def calc_shipping():
print("calc_shipping")
ในการเข้าถึงฟังก์ชันนี้ในโมดูลหลักของเรา เราต้องเข้าถึงฟังก์ชันนี้ผ่านแพ็คเกจอีคอมเมิร์ซ อีกครั้ง เรามีสองวิธีในการนำเข้าโมดูลนี้
ในวิธีแรก เราสามารถนำเข้าทั้งโมดูลแล้วเรียกใช้ฟังก์ชันอย่างอิสระดังนี้:
import eCommerce.shipping
eCommerce.shipping.calc_shipping()
อย่างไรก็ตาม ด้วยวิธีการนี้ การเรียกใช้ฟังก์ชันใดฟังก์ชันหนึ่งไปยังโมดูลนี้ ต้องมีคำนำหน้าด้วย eCommerce.shipping.
นั่นเป็นรายละเอียดมาก ดังนั้น เมื่อทำงานกับแพ็คเกจ เรามักจะใช้วิธีที่สอง และใช้ from
คำแถลง
from eCommerce.shipping import calc_shipping
calc_shipping()
หากคุณมีหลายฟังก์ชันในโมดูลเดียว คุณสามารถนำเข้าฟังก์ชันทั้งหมดได้ในบรรทัดเดียวโดยใช้เครื่องหมายจุลภาคระหว่างฟังก์ชัน สมมติว่ามีฟังก์ชันอื่นในการคำนวณภาษีในโมดูลการจัดส่งของเรา ที่จะนำเข้าเช่นนี้:
from eCommerce.shipping import calc_shipping, calc_tax
คุณยังสามารถนำเข้าแต่ละโมดูลและปล่อยให้ฟังก์ชันถูกเรียกใช้ในภายหลังในโปรแกรม มานำเข้าโมดูลการจัดส่งกัน จากนั้นใช้ตัวดำเนินการจุดเพื่อเรียกใช้ฟังก์ชัน calc_shipping.
from eCommerce import shipping
shipping.calc_shipping()
สรุป!
แพ็คเกจและโมดูลมีความสำคัญอย่างยิ่งใน Python โดยเฉพาะเมื่อคุณต้องการทำงานกับเฟรมเวิร์กอย่าง Django ซึ่งใช้สำหรับสร้าง เว็บแอปพลิเคชัน ด้วยไพทอน เราจะตรวจสอบ Django ระหว่างหลักสูตร Python อื่น
นี่เป็นการบรรยายทั่วไปครั้งสุดท้ายในชุดนี้ การบรรยายครั้งต่อไปจะเบี่ยงเบนไปจากรูปแบบปกติของเรา และเราจะเรียนรู้กรณีการใช้งานที่สำคัญใน Python นั่นจะเป็นจุดสิ้นสุดของซีรีส์นี้ และเราจะไปยังซีรีส์ Python ถัดไปของเรา คอยติดตามสำหรับสิ่งนั้น
เขียนความเห็น