Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pembolehubah Python Berbeza daripada Pembolehubah Rujukan C?

Mengapa Pembolehubah Python Berbeza daripada Pembolehubah Rujukan C?

Susan Sarandon
Susan Sarandonasal
2024-10-21 17:22:03562semak imbas

Why are Python Variables Different from C   Reference Variables?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn