ซ่อมคอมพิวเตอร์นอกสถานที่ รามตำแหง บางกะปิ 083-792-5426

วันศุกร์ที่ 31 มกราคม พ.ศ. 2568

วัตถุที่เปลี่ยนแปลงได้และไม่เปลี่ยนแปลงใน Python



ตถุกลายพันธุ์คืออะไร?

Mutable ใน 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 ความคิดเห็น:

แสดงความคิดเห็น

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design Downloaded from Free Blogger Templates Download | free website templates downloads | Vector Graphics | Web Design Resources Download.