วัตถุที่เปลี่ยนแปลงได้และไม่เปลี่ยนรูปใน 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

วัตถุที่ไม่เปลี่ยนรูปใน 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” ดังที่แสดงด้านล่าง: –

วัตถุที่ไม่เปลี่ยนรูปใน Python

หลังจากใช้ a=344 จะมีวัตถุใหม่อ้างอิงด้วย "a" ไดอะแกรมต่อไปนี้แสดงวัตถุเดียวกัน: –

วัตถุที่ไม่เปลี่ยนรูปใน Python

ดังนั้นเมื่อใดก็ตามที่มีการกำหนดค่าใหม่ให้กับชื่อประเภท 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 ตัวอักษร /สตริง แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้
ชุด ชุดของวัตถุที่แตกต่างกันซึ่งมีลักษณะไม่เป็นระเบียบ ไม่แน่นอน
โฟรเซ่นเซต กำหนดระดับของธรรมชาติที่ไม่เปลี่ยนรูป แก้ไขเปลี่ยนแปลงและหยุดระบบไม่ได้
คำพูด การทำแผนที่พจนานุกรมหรือการเชื่อมโยง ไม่แน่นอน