เนื่องจากไพธอนเป็นภาษาสคริปต์จึงไม่เน้นชนิดของตัวแปร การไม่เน้นไม่ได้หมายความว่าตัวแปรในไพธอนไม่มีชนิด ในความจริงแล้วตัวแปรถ้าพูดแบบละเอียดชนิดของตัวแปรในไพธอนมีเพียงชนิดเดียว นั่นก็คือ พอยเตอร์ (Pointer) นั่นเอง สำหรับผู้ที่เคยมีประสบการณ์เขียนโปรแกรมด้วยภาษาระดับกลางถึงต่ำเช่น ปาสคาล หรือซี เป็นต้น คำว่าพอยเตอร์อาจทำให้ขยาด แต่ในไพธอนแล้วพอยเตอร์เป็นเรื่องธรรมชาติที่เข้าใจได้ง่ายกว่ามาก เพราะไม่มีสัญลักษณ์และรูปแบบที่หลากหลายรวมถึงตัวแปรทุกตัวถือว่าเป็นพอยเตอร์อยู่แล้วจึงไม่สับสนกับชนิดของตัวแปร
แต่เอ๊ะ แล้วทำไมตัวแปรถึงไม่มีชนิดตามข้อมูลล่ะ ง่ายนิดเดียวครับ เพราะตัวแปรเป็นพอยเตอร์ที่เอาไว้ชี้ข้อมูลจริงๆ นั่นเอง เมื่อถึงเวลาใช้แล้วนั้น ตัวแปรจะมีชนิดเปลี่ยนไปตามข้อมูลที่กำลังชี้อยู่ ด้วยเหตุนี้เองทำให้ตัวแปรของไพธอนไม่มีชนิดที่แน่นอนตายตัว ทำให้กลายเป็นทั้งข้อดีและข้อเสียในเวลาเดียวกัน ข้อดีได้แก่
ในขณะที่ข้อเสีย ได้แก่
อย่างไรก็ตาม แม้ว่าตัวแปรของไพธอนจะไม่ต้องกำหนดชนิดที่แน่นอน แต่ตัวแปรจะต้องถูกกำหนดค่าก่อนนำไปใช้เสมอ การกำหนดค่าครั้งแรกถือว่าเป็นการประกาศตัวแปรนั้นขึ้นมาใช้งานทันที เช่น
print a a = 1
ตัวอย่างด้านบนไม่สามารถทำงานได้เพราะ a ยังไม่ถูกประกาศก่อนการใช้งานในบรรทัดแรก ทำให้โปรแกรมเกิดข้อผิดพลาดและหยุดทำงานทันที ตัวอย่างถัดไปเป็นตัวอย่างที่ถูกต้อง
a = 1 print a a = 1.0 print a a = "abc" print a
ว่ากันตามจริงแล้วตัวแปรในไพธอนใช้เหมือนกันหมดไม่มีข้อยกเว้นกรณีพิเศษใดๆ สิ่งที่แตกต่างไปของวิธีใช้ขึ้นกับชนิดข้อมูลของตัวแปรนั้นมากกว่า เพราะไพธอนเป็นภาษาที่อิงการเขียนโปรแกรมเชิงวัตถุ ด้วยเหตุนี้ตัวแปรที่ชี้ไปยังข้อมูลเหล่านี้จึงมีสภาพคล้ายกับอ๊อบเจ็กแต่ไม่ใช่อ๊อบเจ็ก อย่างไรก็ตามการคิดว่าชนิดข้อมูลเป็นอ๊อบเจ็กแบบพิเศษก็ไม่ผิดอะไรนัก แต่ชนิดข้อมูลพื้นฐานส่วนใหญ่ไม่มีเมธอดพิเศษเหมือนภาษาอื่น โดยเฉพาะอย่างยิ่งตรรกะและตัวเลข เมธอดที่ใช้บ่อยมักเกี่ยวกับลำดับและจับคู่ ตอนนี้เราก็จะมาว่ากันด้วยเรื่องของเมธอดที่ควรรู้กันทีละชุด
สตริง เป็นชนิดข้อมูลที่ใช้บ่อยมากๆ ส่วนใหญ่การทำงานกับสตริงจะเป็นเรื่องของค้นหาคำ find() เปลี่ยนคำ replace() ตัวเล็ก lower() ตัวใหญ่ upper() แยกคำ split() เป็นต้น นอกนั้นนี้ก็จะเป็นดึงตัวอักษรบางส่วนออกมาจากสตริง
s = "Ab,Cd,Ef" print s.find("d") print s.find("D") print s.replace("Cd","Gh") print s.lower() print s.upper() print s.split() print s.split(",")
โค้ดด้านบนจะได้ผลลัพธ์ดังด้านล่าง
4 -1 Ab,Gh,Ef ab,cd,ef, AB,GH,EF ["A","b",",","C","d",",","E","f"] ["Ab","Cd","Ef"]
ลิสต์ เป็นชนิดข้อมูลสารพัดประโยชน์ ได้ใช้ทั้งแบบคิว และสแตก สามารถเรียงข้อมูลได้ด้วยตัวเอง แทรกข้อมูลได้
l = [1,2,3,4] print l l.append(5) print l l.append(1) print l print l.count(1),l.count(2) l.extend([5,6,7]) print l l.insert(5,8) print l print l.pop() print l l.remove(5) print l l.reverse() print l l.sort() print l
ผลลัพธ์จะเป็นดังด้านล่าง
[1, 2, 3, 4] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5, 1] 2 1 [1, 2, 3, 4, 5, 1, 5, 6, 7] [1, 2, 3, 4, 5, 8, 1, 5, 6, 7] 7 [1, 2, 3, 4, 5, 8, 1, 5, 6] [1, 2, 3, 4, 8, 1, 5, 6] [6, 5, 1, 8, 4, 3, 2, 1] [1, 1, 2, 3, 4, 5, 6, 8]
ดิกชั่นนารี เป็นชนิดข้อมูลสารพัดประโยชน์เช่นกัน เพราะใช้ง่าย สะดวก ไม่ต้องเขียนคลาสเพิ่ม สามารถเข้าถึงข้อมูลภายในได้ด้วยข้อมูลชนิดใดก็ได้
d = {"a": 1, "b": 2, "c": 3} print d print d.items() print d.keys() print d.values()
ตัวอย่างด้านบนจะให้ผลดังนี้
{"a": 1, "c": 3, "b": 2} [("a", 1), ("c", 3), ("b", 2)] ["a", "c", "b"] [1, 3, 2]