ตถุกลายพันธุ์คืออะไร?
Mutable ใน Python สามารถกำหนดเป็นวัตถุที่สามารถเปลี่ยนแปลงหรือถือได้ว่าเป็นสิ่งที่เปลี่ยนแปลงได้ในธรรมชาติ เปลี่ยนแปลงได้ หมายถึงความสามารถในการแก้ไขหรือแก้ไขค่า
วัตถุที่ไม่แน่นอนใน Python ช่วยให้โปรแกรมเมอร์มีวัตถุที่สามารถเปลี่ยนค่าได้ โดยทั่วไปจะใช้เพื่อเก็บข้อมูล ถือได้ว่าเป็นบางสิ่งที่กลายพันธุ์ และสถานะภายในที่ใช้ภายในวัตถุได้เปลี่ยนแปลงไป
ในบทช่วยสอน Python นี้ คุณจะได้เรียนรู้:
- วัตถุกลายพันธุ์คืออะไร?
- วัตถุที่ไม่เปลี่ยนรูปคืออะไร?
- ใน Python ทุกอย่างคืออ็อบเจกต์
- วัตถุที่ไม่แน่นอนใน Python
- วัตถุที่ไม่เปลี่ยนรูปใน Python
- ความหมายสำหรับคีย์พจนานุกรมใน Python
- ข้อยกเว้นในการไม่เปลี่ยนรูป
- วัตถุที่เปลี่ยนแปลงได้กับวัตถุที่ไม่เปลี่ยนรูป
- Python ชนิดข้อมูลที่ไม่เปลี่ยนรูป
วัตถุที่ไม่เปลี่ยนรูปคืออะไร?
วัตถุที่ไม่เปลี่ยนรูปใน Python สามารถกำหนดเป็นวัตถุที่ไม่เปลี่ยนค่าและคุณลักษณะเมื่อเวลาผ่านไป
ออบเจ็กต์เหล่านี้จะกลายเป็นแบบถาวรเมื่อสร้างและเริ่มต้นแล้ว และสร้างส่วนสำคัญของโครงสร้างข้อมูลที่ใช้ใน Python
Python ใช้ในตัวเลข ทูเพิล สตริง ชุดที่ตรึงไว้ และคลาสที่ผู้ใช้กำหนดโดยมีข้อยกเว้นบางประการ สิ่งเหล่านี้ไม่สามารถเปลี่ยนแปลงได้ และค่านิยมและค่าของมันจะยังคงถาวรเมื่อเริ่มต้นแล้วจึงเรียกว่าไม่เปลี่ยนรูป
ใน Python ทุกอย่างคืออ็อบเจกต์
ในภาษาโปรแกรม Python ทุกสิ่งถือได้ว่าเป็นวัตถุที่ประกอบด้วยรายการ จำนวนเต็ม และฟังก์ชัน คุณลักษณะนี้สามารถเปรียบเทียบได้กับภาษาโปรแกรมอื่น ๆ ที่สนับสนุนอ็อบเจ็กต์
คุณลักษณะนี้สามารถตรวจสอบได้โดยใช้ล่าม Python ดังที่แสดงด้านล่าง: –
รหัสหลาม:
print("อินสแตนซ์ต่อไปนี้เป็นวัตถุ:",isinstance(3,object)) พิมพ์ ("อินสแตนซ์อื่นสำหรับวัตถุ", isinstance (จริง, วัตถุ)) def my_func(): ส่งคืน "guru99" print("นี่คือตัวอย่างฟังก์ชันและถือเป็นวัตถุใน Python:", isinstance(my_func, object))
เอาท์พุท:
อินสแตนซ์ต่อไปนี้เป็นวัตถุ: True อีกตัวอย่างหนึ่งสำหรับวัตถุ True นี่คือตัวอย่างฟังก์ชันและถือเป็นวัตถุใน Python: True
นอกจากนี้ Python ยังมีฟังก์ชันในตัวที่ชื่อว่า id ซึ่งส่งคืนที่อยู่ของอ็อบเจ็กต์ตามที่ปรากฏในหน่วยความจำของภาษาการเขียนโปรแกรม Python
รหัสหลาม:
z = 200 รหัส(z) print("id ของวัตถุคือ",z)
เอาท์พุท:
รหัสของวัตถุคือ 9795360
ในโค้ดข้างต้น ฟังก์ชัน id ที่มีไวยากรณ์เป็น id(obj) จะให้ที่อยู่ของ obj ในหน่วยความจำ Python มีวัตถุชื่อ z และมีการกำหนดค่า 200 จากนั้นวัตถุ z จะถูกส่งไปยังฟังก์ชัน id เป็น id(z) และ Python จะส่งที่อยู่ของวัตถุเป็น 9795360
วัตถุที่ไม่แน่นอนใน Python
ในอ็อบเจ็กต์ที่เปลี่ยนแปลงได้ ค่าของอ็อบเจ็กต์จะเปลี่ยนแปลงในช่วงเวลาหนึ่ง
ในตัวอย่างนี้ เราได้อธิบายอ็อบเจกต์ที่เปลี่ยนแปลงได้ใน Python และสิ่งนี้ใช้รายการเป็นแอปพลิเคชั่นของอ็อบเจกต์ที่เปลี่ยนแปลงได้ดังแสดงด้านล่าง: –
รหัสหลาม:
mut_list = [1, 2, 3] print("รายการใน Python",mut_list) mut_list[0] = 'Gurru99' mut_list print("รายการใน Python หลังจากเปลี่ยนค่า",mut_list)
เอาท์พุท:
รายการใน Python [1, 2, 3] รายการใน Python หลังจากเปลี่ยนค่า ['Gurru99', 2, 3]
ดังที่เราเห็นในตัวอย่างข้างต้น รายการที่ไม่แน่นอนใน Python มีค่าเท่ากับ 1,2,3 องค์ประกอบแรกของรายการที่เปลี่ยนแปลงได้จะเปลี่ยนจาก 1 เป็น Guru99 และจะไม่สร้างวัตถุใหม่เมื่อมีการเริ่มต้นค่าใหม่
ที่นี่เราสามารถใช้วิธี id เพื่อใช้งานได้ ต่อไปนี้แสดงให้เห็นถึงการใช้วิธีการ id สำหรับวัตถุที่เปลี่ยนแปลงได้ดังแสดงด้านล่าง: –
รหัสหลาม:
mut_list = [1, 2, 3] print("รายการใน Python",mut_list) print("id ของรายการคือ ,id(mut_list)) mut_list[0] = 'Gurru99' mut_list print("รายการ mut ใน Python หลังจากเปลี่ยนค่า",mut_list) print("id ของรายการคือการเปลี่ยนแปลงค่าภายหลัง",id(mut_list))
เอาท์พุต
รายการใน Python [1, 2, 3] รหัสของรายการคือ 139931568729600 รายการใน Python หลังจากเปลี่ยนค่า ['Gurru99', 2, 3] id ของรายการคือโพสต์การเปลี่ยนแปลงค่า 139931568729600
รูปต่อไปนี้แสดงอ็อบเจกต์ที่เปลี่ยนแปลงได้ใน Python ดังแสดงด้านล่าง: –
วัตถุที่ไม่เปลี่ยนรูปใน Python
ออบเจ็กต์ที่ไม่เปลี่ยนรูปใน Python คืออ็อบเจ็กต์ที่อินสแตนซ์ไม่เปลี่ยนแปลงตลอดช่วงเวลา อินสแตนซ์ที่ไม่เปลี่ยนรูปของประเภทเฉพาะ เมื่อสร้างแล้ว จะไม่เปลี่ยนแปลง และสามารถตรวจสอบได้โดยใช้วิธี id ของ Python
ให้เรายกตัวอย่างวัตถุประเภทจำนวนเต็มใน Python ที่แสดงแนวคิดของวัตถุที่ไม่เปลี่ยนรูปใน Python ดังแสดงด้านล่าง: –
รหัสหลาม:
ก=244 print("จำนวนก่อนเปลี่ยนคือ",a) print("id ของตัวเลขก่อนการเปลี่ยนแปลงคือ",id(a)) a=344 print("ตัวเลขหลังการเปลี่ยนแปลงคือ",a) print("id ของตัวเลขหลังการเปลี่ยนแปลงคือ",id(a))
เอาท์พุต
ตัวเลขก่อนการเปลี่ยนแปลงคือ 244 id ของตัวเลขก่อนการเปลี่ยนแปลงคือ 9796768 ตัวเลขก่อนเปลี่ยนคือ 344 id ของตัวเลขก่อนการเปลี่ยนแปลงคือ 140032307887024
จะเห็นได้ว่ามีการเปลี่ยนแปลงใน "a" มาศึกษาว่ากลไกทำงานอย่างไร:
- ไม่มีการเปลี่ยนแปลงในค่าของวัตถุเมื่อเริ่มต้น "a" ด้วย 344
- แต่จะมีการสร้างวัตถุใหม่และล้อมรอบด้วย "a"
- วัตถุอื่นที่กำหนดเป็น 244 จะไม่สามารถเข้าถึงได้อีกต่อไป
- ตัวอย่างข้างต้นใช้วัตถุจำนวนเต็ม
ที่ a=244 วัตถุใหม่จะถูกสร้างขึ้นและอ้างอิงถึง “a” ดังที่แสดงด้านล่าง: –
โพสต์โดยใช้ a=344 มีอ็อบเจ็กต์ใหม่ที่อ้างอิงด้วย “a” ไดอะแกรมต่อไปนี้แสดงถึงสิ่งเดียวกัน: –
ดังนั้นเมื่อใดก็ตามที่มีการกำหนดค่าใหม่ให้กับชื่อของประเภท int จะมีการเปลี่ยนแปลงในการผูกชื่อกับวัตถุอื่น หลักการเดียวกันนี้สอดคล้องกับ tuples, strings, float และ Boolean จึงเรียกว่าไม่เปลี่ยนรูป
ความหมายสำหรับคีย์พจนานุกรมใน Python
พจนานุกรมสามารถกำหนดเป็นคอลเลกชันที่เรียงลำดับซึ่งเก็บข้อมูลในรูปแบบคีย์และไม่อนุญาตให้ทำซ้ำ พจนานุกรมมีหนึ่งคีย์ซึ่งมีคู่ค่าที่สอดคล้องกันซึ่งจัดตำแหน่งไว้ พวกมันเปลี่ยนแปลงได้ในประเภท และเนื้อหาสามารถเปลี่ยนแปลงได้แม้หลังจากเริ่มต้นและการสร้าง
ในช่วงเวลาใด ๆ ประเด็นสำคัญจะชี้ไปที่องค์ประกอบเฉพาะอย่างใดอย่างหนึ่งในแต่ละครั้ง กุญแจของพจนานุกรมไม่เปลี่ยนรูป
ให้เราใช้สถานการณ์สมมติที่แสดงด้านล่าง: –
ก = [4, 6] ข = [5, 6, 7] my_dict = {a: 'x', b: 'y'} พิมพ์ (my_dict)
ผลลัพธ์: – โค้ด Python ด้านบนไม่ได้ให้ผลลัพธ์ใดๆ และจะสร้างข้อผิดพลาดประเภทประเภทที่ไม่สามารถแฮชได้แทน นี่เป็นสถานการณ์สมมติและไม่ได้ใช้ในคอมไพเลอร์ Python
ในที่นี้a
ถูกกำหนดเป็น [4,6] และในพจนานุกรมถูกกำหนดเป็น x ในที่นี้b
ถูกกำหนดเป็น [5,6,7] และในพจนานุกรมถูกกำหนดเป็น y
- คีย์ 'a' มีค่า [4,6] และกำหนดค่าเริ่มต้นเพิ่มเติมเป็น x
- คีย์ 'b' มีค่าเป็น [5,6,7] ซึ่งกำหนดค่าเริ่มต้นเพิ่มเติมเป็น 'y' ในพจนานุกรม
- สมมติว่าค่าของ ' aต่อท้ายด้วย 5 และ 7 ซึ่งเป็นกุญแจสำคัญสำหรับพจนานุกรม
- จากนั้นพจนานุกรมก็กลายพันธุ์และจะให้ทั้ง'x'และ'y'เป็นค่าสำหรับพจนานุกรมด้านบน
พิจารณาสถานการณ์สมมติต่อไปนี้ตามภาพประกอบด้านบน: –
ก = [5, 6,7] ข = [5, 6, 7] my_dict = {a: 'x', b: 'y'} พิมพ์ (my_dict)
ดังนั้น ในฐานะภาษาโปรแกรม Python ทำให้คีย์ของพจนานุกรมไม่เปลี่ยนรูป และพจนานุกรมเป็นประเภทข้อมูลที่ไม่เปลี่ยนรูป
ข้อยกเว้นในการไม่เปลี่ยนรูป
อย่างไรก็ตาม Python ให้ข้อยกเว้นสำหรับความไม่เปลี่ยนรูป ข้อยกเว้นดังกล่าวสามารถสังเกตได้สำหรับประเภทวัตถุทูเปิล ทูเพิลสามารถเป็นการรวมกันของประเภทอ็อบเจ็กต์ที่ไม่แน่นอนและไม่เปลี่ยนรูป ให้เรายกตัวอย่างเพื่ออธิบายข้อยกเว้นในการไม่เปลี่ยนรูปดังที่แสดงด้านล่าง: –
รหัสหลาม:
tupexample=([1,1],'guru99') print("ทูเพิลก่อนการเปลี่ยนแปลง",ทูเพิล) print("id ของ tuple ก่อนเปลี่ยน",id(tupexample)) tupexample=([2,2],'guru99') print("ทูเพิลหลังการเปลี่ยนแปลง",ทูเพิล) print("id ของ tuple หลังจากเปลี่ยน",id(tupexample))
เอาท์พุท:
ทูเพิลก่อนการเปลี่ยนแปลง ([1, 1], 'guru99') id ของ tuple ก่อนการเปลี่ยนแปลง 140649480694656 ทูเพิลหลังการเปลี่ยนแปลง ([2, 2], 'guru99') id ของ tuple หลังจากเปลี่ยน 140649480694592
คุณสามารถเห็นได้ในโค้ดด้านบนว่าองค์ประกอบแรกซึ่งเป็นรายการนั้นไม่สามารถเปลี่ยนแปลงได้ ในขณะที่ tuple นั้นไม่สามารถเปลี่ยนแปลงได้ ค่าของ tuple ไม่สามารถเปลี่ยนแปลงได้ แต่เนื้อหาของรายการที่อยู่ใน tuple สามารถเปลี่ยนค่าได้
ดังนั้น สิ่งนี้ทำให้เกิดข้อยกเว้นว่าอ็อบเจ็กต์ที่ไม่เปลี่ยนรูปไม่ได้เปลี่ยนค่าของพวกมัน แต่ค่าขององค์ประกอบจะเปลี่ยนค่าของพวกมัน
วัตถุที่เปลี่ยนแปลงได้กับวัตถุที่ไม่เปลี่ยนรูป
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่าง Mutable และ Immutable Objects:
วัตถุที่ไม่แน่นอน | วัตถุที่ไม่เปลี่ยนรูป |
สถานะวัตถุสามารถเปลี่ยนแปลงได้เมื่อสร้างแล้ว | เมื่อสร้างแล้วจะไม่สามารถเปลี่ยนสถานะวัตถุได้ |
ออบเจ็กต์ที่เปลี่ยนแปลงได้ไม่ถือว่าปลอดภัยสำหรับเธรด | วัตถุที่ไม่เปลี่ยนรูปจะถือเป็นเธรดที่ปลอดภัยในธรรมชาติ |
อ็อบเจ็กต์ที่เปลี่ยนแปลงได้ไม่ได้ถูกสร้างให้เสร็จสิ้น และด้วยเหตุนี้โปรแกรมเมอร์จึงสามารถเปลี่ยนแปลงอ็อบเจ็กต์ที่เปลี่ยนแปลงได้และใช้อ็อบเจ็กต์เดียวกัน | มันเป็นสิ่งสำคัญที่จะทำให้คลาสสุดท้ายเมื่อมีการสร้างอ็อบเจกต์ที่ไม่เปลี่ยนรูป |
Python ชนิดข้อมูลที่ไม่เปลี่ยนรูป:
ระดับ | คำอธิบาย | ไม่เปลี่ยนรูปหรือไม่ |
บูล | ค่าบูลีน | ไม่เปลี่ยนรูป |
Int | ค่าจำนวนเต็ม (ขนาดสามารถกำหนดเองได้) | ไม่เปลี่ยนรูป |
ลอย | เลขทศนิยม | ไม่เปลี่ยนรูป |
รายการ | ลำดับของวัตถุที่มีลักษณะไม่แน่นอน | เปลี่ยนแปลงได้ |
ทูเปิล | ลำดับของวัตถุธรรมชาติที่ไม่เปลี่ยนรูป | ไม่เปลี่ยนรูป |
สตรัท | ตัวละคร /สตริง | ไม่เปลี่ยนรูป |
ชุด | ชุดของวัตถุแตกต่างที่มีลักษณะไม่เป็นระเบียบ | เปลี่ยนแปลงได้ |
Frozenset | กำหนดระดับของธรรมชาติที่ไม่เปลี่ยนรูป | ไม่เปลี่ยนรูป |
Dict | การทำแผนที่พจนานุกรมหรือการเชื่อมโยง | เปลี่ยนแปลงได้ |
0 ความคิดเห็น:
แสดงความคิดเห็น