Pembolehubah Rujukan Python
Dalam Python, memberikan nilai kepada pembolehubah mencipta rujukan kepada nilai tersebut. Walau bagaimanapun, tidak seperti dalam bahasa seperti C , pembolehubah Python tidak memegang nilai sebenar itu sendiri. Sebaliknya, ia merujuk kepada objek yang disimpan di tempat lain dalam ingatan.
Masalah Ketidakbolehubah
Pertimbangkan kod Python berikut:
<code class="python">y = 7 x = y x = 8</code>
Selepas melaksanakan kod ini, y akan kekal 7, manakala x akan menjadi 8. Ini kerana x dan y adalah rujukan kepada objek yang berbeza. Apabila x diberikan nilai baharu, ia tidak lagi merujuk kepada objek yang sama seperti y.
Pembolehubah Rujukan C lwn Rujukan Python
Dalam C , pembolehubah rujukan menyediakan alternatif untuk menghantar pembolehubah mengikut nilai. Pembolehubah rujukan ialah alias untuk pembolehubah sedia ada, bermakna sebarang perubahan yang dibuat kepada pembolehubah yang dirujuk juga ditunjukkan dalam pembolehubah rujukan.
Dalam contoh C yang disediakan:
<code class="cpp">int y = 8; int &x = y; x = 9;</code>
y dan x ialah kedua-dua rujukan kepada objek yang sama. Oleh itu, memberikan nilai baharu kepada x turut mengubah nilai y.
Keterbatasan Python
Malangnya, Python tidak mempunyai cara terbina dalam untuk mencipta rujukan sebenar seperti C . Percubaan untuk mencipta rujukan dengan memberikan pembolehubah kepada pembolehubah lain, seperti yang ditunjukkan dalam kod yang disediakan, menghasilkan rujukan berasingan kepada objek yang berbeza.
Penyelesaian
Untuk meniru tingkah laku rujukan C dalam Python, seseorang boleh membuat kelas tersuai yang berfungsi sebagai rujukan kepada nilai yang dikehendaki. Contohnya:
<code class="python">class Reference: def __init__(self, val): self.value = val def get(self): return self.value def set(self, new_value): self.value = new_value # Usage: ref = Reference(7) x = ref.get() # x = 7 ref.set(8) # Both x and ref.get() will now be 8</code>
Walau bagaimanapun, kaedah ini adalah penyelesaian dan bukannya pelaksanaan sebenar rujukan Python. Ia masih memerlukan penggunaan eksplisit kaedah get() dan set() untuk mengubah suai nilai yang dirujuk.
Atas ialah kandungan terperinci Mengapa Pembolehubah Python Berbeza daripada Pembolehubah Rujukan C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!