Coding Gun

Data Types ใน python มีอะไรบ้าง

Data types คือสิ่งที่ใช้ในการกำหนดประเภท(type)ของตัวแปร ซึ่งเราสามารถตรวจสอบประเภทของตัวแปรได้ด้วย function type()

รู้จักกับ type()

type() จะใช้ตรวจสอบประเภทของตัวแปร ซึ่ง type() จะมีการรับ parameter เป็นชื่อตัวแปรที่เราต้องการตรวจสอบ เช่น

numbers = [1, 2, 3, 4]
print(type(numbers))

ผลลัพธ์จะออกมาแบบนี้

<class 'list'>

type() นอกจากจะใช้ตรวจสอบ data type แล้วยังสามารถใช้สร้าง type ขึ้นมาใหม่ก็ได้

Python data types

data types ใน python จะถูกแบ่งออกเป็นกลุ่มต่างๆ ดังนี้

  1. Numeric data types ประกอบไปด้วย int, float, complex
  2. Boolean types มี type เดียวคือ bool
  3. String data types มี type เดียวคือ str
  4. Binary types ประกอบไปด้วย bytes, bytearray, memoryview
  5. Sequence types ประกอบไปด้วย list, tuple
  6. Mapping data types มี type เดียวคือ dict
  7. Set data types ประกอบไปด้วย set, frozenset
  8. None types มี type เดียวคือ None

Python data types

1. Numeric data types

เป็น data type ที่ใช้เก็บตัวเลข ซึ่งจะประกอบไปด้วย

2. Boolean types

เป็นตัวแปรที่เก็บผลลพธ์ทางตรรกศาสตร์ คือ จริง(True) และ เท็จ(False) ความยากของ boolean คือเราต้องรู้ว่าค่าไหนเป็น truthy หรือ falsy ซึ่ง

ใน python ค่าที่เทียบเท่า True(Truthy) มีค่อนข้างเยอะ ตัวอย่างของ Truthy มีดังนี้

a = bool(42)         # ตัวแปร a จะมีค่าเป็น True
a = bool(-1)         # ตัวแปร a จะมีค่าเป็น True
a = bool([1,2])      # ตัวแปร a จะมีค่าเป็น True
a = bool("False")    # ตัวแปร a จะมีค่าเป็น True

ใน python ค่าที่เทียบเท่า False หรือ Falsy มีดังนี้

a = bool(0.0)   # ตัวแปร a จะมีค่าเป็น False
a = bool(0j)    # ตัวแปร a จะมีค่าเป็น False (complex number)
a = bool(None)  # ตัวแปร a จะมีค่าเป็น False
a = bool([])    # ตัวแปร a จะมีค่าเป็น False (Empty list)
a = bool(())    # ตัวแปร a จะมีค่าเป็น False (Empty tuple)
a = bool({})    # ตัวแปร a จะมีค่าเป็น False (Empty Dict)
a = bool("")    # ตัวแปร a จะมีค่าเป็น False (Empty string)
a = bool(range(0))  # ตัวแปร a จะมีค่าเป็น False (range(0,0) ไม่มีค่าเลย)

3. String types

ตัวแปร string คือ ตัวอักษร unicode ที่เรียงต่อกัน เราสามารถประกาศตัวแปร string ได้แบบนี้

a = 'This is a string'
a = "This is a string"
a = """This is a
        multiline string"""
a = 'this is a \n multiline string'
print(a)       # ข้อความ a จะขึ้นบรรทัดใหม่

เราสามารถต่อ string ได้ด้วยวิธีนี้

a = "Hello " "world"        # ผลลัพธ์ออกมาเป็น 'Hello world'
a = "Hello " + "world"      # ผลลัพธ์ออกมาเป็น 'Hello world'

hello = ' '.join(['Welcome','to','python','world'])
# ผลลัพธ์จะออกมาเป็น 'Welcome to python world'

colors = ';'.join(['#45ff23','#11FF23', '#CCFF44'])
# ผลลัพธ์จะออกมาเป็น '#45ff23;#11FF23;#CCFF44'

หรือเราจะ split string ออกมาแบบนี้ก็ได้

colors.split(';')
# ผลลัพธ์จะกลับมาเป็น ['#45ff23','#11FF23', '#CCFF44']

ในกรณีที่มีอักขระพิเศษ เราจะใช้ “r” นำหน้าแบบนี้ (r ย่อมาจาก raw string)

path = r"C:\Users\Training\Documents"

ผลลัพธ์จะออกมาเป็นแบบนี้

'C:\\Users\\Training\\Documents'

การจัด format ของ string เราสามารถใช้รูปแบบต่างๆ เหล่านี้

4. Binary types

เป็นกลุ่มของตัวแปรที่เก็บเป็น binary ประกอบไปด้วย

5. Sequence types

เป็นตัวแปรที่สามารถวนลูปเข้าไปในสมาชิกแต่ละตัวได้ ซึ่งประกอบไปด้วย

6. Mapping type

ใน Mapping type จะมีอยู่ประเภทเดียวคือ Dictionary ซึ่งตัวแปรประเภท Dictionary จะเหมือนกับ JSON ใน Javascript ซึ่งจะ map ระหว่าง key และ value บางครี้งอาจเรียกว่า maps หรือ associative array

contacts = {} # ประกาศ empty dict
contacts = {'bob': '081-111-2222', 'alice': '086-333-4444'}

print(contacts['bob'])

# add สมาชิกใหม่เข้าไปได้เลย
contacts['jenny'] = '062-444-5555'

# ผลลัพธ์ที่ได้จะเป็นแบบนี้
{'bob': '081-111-2222', 'alice': '086-333-4444', 'jenny': '062-444-5555'}

7. Set data types

เป็น data type ที่ใช้ที่เก็บข้อมูล โดย set จะมีข้อกำหนด ดังนี้

  1. สมาชิกแต่ละตัวจะไม่ซ้ำกัน
  2. ใน set ลำดับไม่มีความสำคัญ

เราจะใช้ set เมื่อเราต้องการใช้ operation ทางคณิตศาสตร์ เช่น union, intersection และ diff

Set data types จะแบ่งออกเป็น

  1. set ซึ่งจะเป็น data type ที่ mutable ซึ่งหมายถึง การเพิ่ม, ลบ หรือเปลี่ยนแปลงสมาชิกภายใน set ได้
  2. forzenset จะเป็น immutable หมายถึง ไม่สามารถเปลี่ยนแปลงสมาชิกได้่ ดังนั้่น forzenset จะไม่มี method add และ function อื่นๆที่เป็นการแก้ไข forzenset นี้ ดังนั้นถ้าเรา run code นี้
mylist = ['apple', 'banana', 'cherry']
x = frozenset(mylist)

x.add('pipeapple')

จะเกิด Error ขึ้นแบบนี้

ERROR!
Traceback (most recent call last):
  File "<string>", line 4, in <module>
AttributeError: 'frozenset' object has no attribute 'add'

8. None types

None หรือ Nonetype จะเป็นเหมือนกับ null ในภาษาอื่นๆ คือเรายังไม่รู้ว่าข้อมูลคืออะไร เลยยังไม่สามารถระบุได้ว่าเป็น data type ประเภทไหน การกำหนดค่า None สามารถทำได้แบบนี้

a = None # ต้องเป็น N ใหญ่เท่านั้น

print(type(a))

ผลลัพธ์จะออกมาเป็นแบบนี้

<class 'NoneType'>

เวลาเปรียบเทียบค่า None ต้องระวัง เพราะ None ไม่ใช่ False แต่มีค่าเทียบเท่า False

a = None

if not a:
    print('a is False')

การใข้ Union types

เราสามารถใช้ bitwise operator(|) ในการรวม data types เข้าด้วยกัน เช่น เรามีตัวแปรที่สามารถเป็นได้ทั้งจำนวนเต็ม หรือเลขทศนิยมก็ได้

ลองดูตัวอย่าง function square นี้เราสามารถส่งตัวแปร number เข้ามาเป็น int หรือ float ก็ได่้

def square(number: int | float) -> int | float:
    return number ** 2

ดังนั้นใน function square นี้จะ

ลำดับก่อนหลังของ data type ไม่มีผล int | float มีค่าเท่ากับ float | int

อ่านต่อเพิ่มเติมได้ที่นี่

Phanupong Permpimol
Follow me