วัตถุที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูปใน Python {ตัวอย่าง}
วัตถุที่ไม่แน่นอนคืออะไร?
เปลี่ยนแปลงได้ใน Python สามารถกำหนดเป็นวัตถุที่สามารถเปลี่ยนแปลงหรือถือได้ว่าเป็นสิ่งที่เปลี่ยนแปลงได้ในธรรมชาติ ไม่แน่นอนหมายถึงความสามารถในการแก้ไขหรือแก้ไขค่า
วัตถุที่ไม่แน่นอนใน Python ช่วยให้โปรแกรมเมอร์มีวัตถุที่สามารถเปลี่ยนค่าได้ โดยทั่วไปจะใช้ในการเก็บข้อมูล ถือได้ว่าเป็นสิ่งที่กลายพันธุ์ และสถานะภายในที่ใช้งานได้ภายในวัตถุก็เปลี่ยนไป
วัตถุที่ไม่เปลี่ยนรูปคืออะไร?
วัตถุที่ไม่เปลี่ยนรูปใน Python สามารถกำหนดเป็นวัตถุที่ไม่เปลี่ยนแปลงค่าและคุณลักษณะเมื่อเวลาผ่านไป
ออบเจ็กต์เหล่านี้จะคงอยู่ถาวรเมื่อสร้างและเตรียมใช้งาน และเป็นส่วนสำคัญของโครงสร้างข้อมูลที่ใช้ Python.
Python ใช้เป็นตัวเลข สิ่งทอสตริง ชุดที่ตรึง และคลาสที่ผู้ใช้กำหนดโดยมีข้อยกเว้นบางประการ พวกเขาไม่สามารถเปลี่ยนแปลงได้ และค่าของพวกเขาและจะยังคงถาวรเมื่อเริ่มต้นแล้ว และด้วยเหตุนี้จึงเรียกว่าไม่เปลี่ยนรูป
In Pythonทุกสิ่งเป็นวัตถุ
ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร Python ภาษาโปรแกรม ทุกอย่างถือได้ว่าเป็นวัตถุที่ประกอบด้วยรายการ จำนวนเต็ม และฟังก์ชัน คุณลักษณะนี้สามารถเปรียบเทียบได้กับภาษาการเขียนโปรแกรมอื่นๆ ที่รองรับออบเจ็กต์
คุณสมบัตินี้สามารถตรวจสอบได้โดยใช้ Python ล่ามตามที่แสดงด้านล่าง: –
Python รหัส:
print("The following instance is an object:",isinstance(3,object)) print("Another instance for object", isinstance(True, object)) def my_func(): return "guru99" print("This is a function example and regarded as an object in Python:", isinstance(my_func, object))
Output:
A following instance is an object: True Another instance for object True This is a function example and regarded as an object in Python: True
ไกลออกไป Python จัดเตรียมฟังก์ชันในตัวชื่อ id ซึ่งจะส่งคืนที่อยู่ของวัตถุตามที่มีอยู่ในหน่วยความจำของ Python ภาษาเขียนโปรแกรม
Python รหัส:
z=200 id(z) print("The id of object is", id(z))
Output:
the id of object is 9795360
ในโค้ดข้างต้น ฟังก์ชัน id ที่มีไวยากรณ์เป็น id(obj) จะให้ที่อยู่ของ obj in Python หน่วยความจำ. ในที่นี้ มีวัตถุชื่อ z และมีค่ามอบหมาย 200 จากนั้นวัตถุ z จะถูกส่งผ่านไปยังฟังก์ชัน id เป็น id(z) และ Python ส่งที่อยู่ของวัตถุเป็น 9795360
วัตถุที่ไม่แน่นอนใน Python
ในวัตถุที่ไม่แน่นอน ค่าของวัตถุจะเปลี่ยนแปลงไปตามช่วงระยะเวลาหนึ่ง
ในตัวอย่างนี้ เราได้อธิบายวัตถุที่ไม่แน่นอนแล้ว Pythonและสิ่งนี้ใช้รายการเป็นแอปพลิเคชันของวัตถุที่ไม่แน่นอนดังแสดงด้านล่าง: –
Python รหัส:
mut_list = [1, 2, 3] print("The list in Python",mut_list) mut_list[0] = 'Gurru99' mut_list print("The list in Python after changing value",mut_list)
Output:
The list in Python [1, 2, 3] The list in Python after changing value ['Gurru99', 2, 3]
ดังที่เราเห็นในตัวอย่างข้างต้น รายการที่ไม่แน่นอนอยู่ในนั้น Python มีค่าเท่ากับ 1,2,3 องค์ประกอบแรกของรายการที่ไม่แน่นอนจะเปลี่ยนจาก 1 เป็น Guru99 และจะไม่สร้างออบเจ็กต์ใหม่เมื่อมีการเตรียมใช้งานค่าใหม่
เราสามารถใช้เมธอด id ได้ที่นี่ ต่อไปนี้คือตัวอย่างการใช้เมธอด id สำหรับวัตถุที่เปลี่ยนแปลงได้ดังแสดงด้านล่าง:
Python รหัส:
mut_list = [1, 2, 3] print("The list in Python",mut_list) print("the id of the list is ",id(mut_list)) mut_list[0] = 'Gurru99' mut_list print("The mut list in Python after changing value",mut_list) print("the id of the list is post change in value",id(mut_list))
เอาท์พุต
The list in Python [1, 2, 3] the id of the list is 139931568729600 The list in Python after changing value ['Gurru99', 2, 3] the id of the list is post change in value 139931568729600
รูปภาพต่อไปนี้แสดงให้เห็นวัตถุที่เปลี่ยนแปลงได้ใน Python ดังแสดงด้านล่าง: –
วัตถุที่ไม่เปลี่ยนรูปใน Python
วัตถุที่ไม่เปลี่ยนรูปใน Python เป็นวัตถุที่อินสแตนซ์ไม่เปลี่ยนแปลงในช่วงเวลา อินสแตนซ์ประเภทเฉพาะที่ไม่เปลี่ยนรูป เมื่อสร้างแล้ว จะไม่เปลี่ยนแปลง และสามารถตรวจสอบได้โดยใช้วิธี id ของ Python.
ให้เรานำตัวอย่างของวัตถุประเภทจำนวนเต็มมา Python ที่แสดงให้เห็นแนวคิดของวัตถุที่ไม่เปลี่ยนรูปใน Python ดังแสดงด้านล่าง: –
Python รหัส:
a=244 print("the number before change is",a) print("the id of number before change is",id(a)) a=344 print("the number after change is",a) print("the id of number after change is",id(a))
เอาท์พุต
the number before a change is 244 the id of number before change is 9796768 the number before change is 344 the id of number before change is 140032307887024
จะเห็นได้ว่าด้านบนมีการเปลี่ยนแปลงใน "a" เรามาศึกษาว่ากลไกทำงานอย่างไร:
- ไม่มีการเปลี่ยนแปลงค่าของวัตถุเมื่อกำหนดค่าเริ่มต้นของ “a” ด้วย 344
- แต่วัตถุใหม่จะถูกสร้างขึ้นและล้อมรอบด้วย "a" แทน
- วัตถุอื่นที่กำหนดเป็น 244 จะไม่สามารถเข้าถึงได้อีกต่อไป
- ตัวอย่างข้างต้นใช้วัตถุจำนวนเต็ม
ที่ a=244 ออบเจ็กต์ใหม่จะถูกสร้างขึ้นและอ้างอิงถึง “a” ดังที่แสดงด้านล่าง: –
หลังจากใช้ a=344 จะมีวัตถุใหม่อ้างอิงด้วย "a" ไดอะแกรมต่อไปนี้แสดงวัตถุเดียวกัน: –
ดังนั้นเมื่อใดก็ตามที่มีการกำหนดค่าใหม่ให้กับชื่อประเภท int จะมีการเปลี่ยนแปลงในการผูกชื่อกับวัตถุอื่น หลักการเดียวกันนี้สอดคล้องกับสิ่งอันดับ เงื่อนไข, float และ Boolean จึงเรียกว่าไม่เปลี่ยนรูป
ผลกระทบสำหรับคีย์พจนานุกรมใน Python
พจนานุกรมสามารถกำหนดเป็นคอลเลกชันที่เรียงลำดับซึ่งจัดเก็บข้อมูลในรูปแบบคีย์และไม่อนุญาตให้ทำซ้ำ พจนานุกรมมีหนึ่งคีย์ซึ่งมีคู่ค่าที่สอดคล้องกันจัดชิดกัน สิ่งเหล่านี้ไม่แน่นอนในประเภท และเนื้อหาสามารถเปลี่ยนแปลงได้แม้ว่าจะเริ่มต้นและสร้างขึ้นแล้วก็ตาม
ประเด็นสำคัญจะชี้ไปที่องค์ประกอบเฉพาะทีละรายการ ณ เวลาใดเวลาหนึ่ง กุญแจของพจนานุกรมไม่เปลี่ยนรูป
ขอให้เราใช้สถานการณ์สมมติดังที่แสดงด้านล่าง: –
a = [4, 6] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
เอาท์พุต: – ข้างต้น Python รหัสไม่ให้ผลลัพธ์ใด ๆ แต่กลับสร้างข้อผิดพลาดประเภทประเภทที่ไม่สามารถแฮชได้ นี่เป็นสถานการณ์สมมุติและไม่ได้ใช้ใน Python คอมไพเลอร์
ที่นี่ a
ถูกกำหนดให้เป็น [4,6] และในพจนานุกรม กำหนดให้เป็น x ที่นี่, b
ถูกกำหนดให้เป็น [5,6,7] และในพจนานุกรม กำหนดให้เป็น y
- คีย์ 'a' มีค่าเป็น [4,6] และกำหนดค่าเริ่มต้นเพิ่มเติมเป็น x
- คีย์ 'b' มีค่าเป็น [5,6,7] ซึ่งเตรียมใช้งานเพิ่มเติมเป็น 'y' ในพจนานุกรม
- ตอนนี้สมมติว่าค่าของ ''การ ต่อท้ายด้วย 5 และ 7 ซึ่งเป็นคีย์สำหรับพจนานุกรม
- จากนั้นพจนานุกรมก็กลายพันธุ์ และมันจะให้ทั้งสองอย่าง 'NS' และ 'คุณ' เป็นค่าสำหรับพจนานุกรมข้างต้น
ลองพิจารณาสถานการณ์ต่อไปนี้ตามที่แสดงไว้ข้างต้น: –
a = [5, 6,7] b = [5, 6, 7] my_dict = {a: 'x', b: 'y'} print(my_dict)
ดังนั้นในฐานะภาษาโปรแกรม Python ทำให้คีย์ของพจนานุกรมไม่เปลี่ยนรูป และพจนานุกรมเป็นประเภทข้อมูลที่ไม่เปลี่ยนรูป
ข้อยกเว้นในเรื่องความไม่เปลี่ยนรูป
อย่างไรก็ตาม Python ให้ข้อยกเว้นสำหรับความไม่เปลี่ยนรูป ข้อยกเว้นดังกล่าวสามารถสังเกตได้สำหรับประเภทวัตถุทูเพิล สิ่งอันดับสามารถเป็นการรวมกันของประเภทวัตถุที่ไม่แน่นอนและไม่เปลี่ยนรูป ให้เรายกตัวอย่างเพื่ออธิบายข้อยกเว้นในเรื่องความไม่เปลี่ยนรูปดังที่แสดงด้านล่าง: –
Python รหัส:
tupexample=([1,1],'guru99') print("the tuple before change",tupexample) print("the id of tuple before change",id(tupexample)) tupexample=([2,2],'guru99') print("the tuple after change",tupexample) print("the id of tuple after change",id(tupexample))
Output:
the tuple before change ([1, 1], 'guru99') the id of tuple before change 140649480694656 the tuple after change ([2, 2], 'guru99') the id of tuple after change 140649480694592
คุณสามารถเห็นได้ในโค้ดด้านบนว่าองค์ประกอบแรกซึ่งเป็นรายการนั้นไม่แน่นอน ในขณะที่ทูเพิลไม่เปลี่ยนรูป ค่าของทูเปิลไม่สามารถเปลี่ยนแปลงได้ แต่เนื้อหาของรายการที่อยู่ในทูเพิลสามารถเปลี่ยนค่าได้
ดังนั้นสิ่งนี้ทำให้เกิดข้อยกเว้นว่าวัตถุที่ไม่เปลี่ยนรูปจะไม่เปลี่ยนค่า แต่ค่าขององค์ประกอบจะเปลี่ยนค่าของมัน
วัตถุที่ไม่แน่นอนกับวัตถุที่ไม่เปลี่ยนรูป
นี่คือความแตกต่างที่สำคัญระหว่างวัตถุที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูป:
วัตถุที่ไม่แน่นอน | วัตถุที่ไม่เปลี่ยนรูป |
---|---|
สถานะของวัตถุสามารถเปลี่ยนแปลงได้เมื่อสร้างขึ้น | สถานะของวัตถุไม่สามารถเปลี่ยนแปลงได้เมื่อสร้างแล้ว |
อ็อบเจ็กต์ที่ไม่แน่นอนไม่ถือว่าปลอดภัยต่อเธรด | วัตถุที่ไม่เปลี่ยนรูปจะถือว่าปลอดภัยต่อเธรด |
อ็อบเจ็กต์ที่ไม่แน่นอนไม่ได้ถูกสร้างขั้นสุดท้าย และด้วยเหตุนี้โปรแกรมเมอร์จึงสามารถเปลี่ยนแปลงอ็อบเจ็กต์ที่ไม่แน่นอนต่อไปและใช้อ็อบเจ็กต์เดียวกันได้ | จำเป็นอย่างยิ่งที่จะต้องทำให้คลาสสุดท้ายเมื่อมีการสร้างอ็อบเจ็กต์ที่ไม่เปลี่ยนรูป |
Python ประเภทข้อมูลที่ไม่เปลี่ยนรูป
ชั้น | คำอธิบาย | ไม่เปลี่ยนรูปหรือไม่ |
---|---|---|
บูล | ค่าบูลีน | แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้ |
Int | ค่าจำนวนเต็ม (ขนาดสามารถกำหนดเองได้) | แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้ |
ลอย | หมายเลขจุดลอยตัว | แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้ |
รายการ | ลำดับของวัตถุที่มีลักษณะไม่แน่นอน | ไม่แน่นอน |
ทูเพิล | ลำดับของวัตถุที่มีลักษณะไม่เปลี่ยนรูป | แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้ |
Str | ตัวอักษร /สตริง | แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้ |
ชุด | ชุดของวัตถุที่แตกต่างกันซึ่งมีลักษณะไม่เป็นระเบียบ | ไม่แน่นอน |
โฟรเซ่นเซต | กำหนดระดับของธรรมชาติที่ไม่เปลี่ยนรูป | แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้ |
คำพูด | การทำแผนที่พจนานุกรมหรือการเชื่อมโยง | ไม่แน่นอน |