Dalam pengaturcaraan, keupayaan untuk mengubah suai pembolehubah dengan mengubah rujukannya boleh berguna dalam senario tertentu. Teknik ini biasanya digunakan dalam bahasa seperti C , tetapi adakah cara untuk mencapai kesan yang serupa dalam Python?
Mari kita periksa coretan kod untuk memahami isu:
<code class="python">y = 7 x = y x = 8</code>
Di sini, x dan y pada mulanya diberikan nilai yang sama (7). Walau bagaimanapun, apabila x ditukar kepada 8, y kekal pada 7. Ini kerana Python mencipta pembolehubah baru x dan memberikannya nilai y (7). Apabila x diubah suai, nilai baharu (8) diberikan kepada lokasi pembolehubah yang berbeza dalam ingatan.
Tingkah laku yang diingini ialah y berubah serentak apabila x diubah. Dalam C, ini boleh dicapai menggunakan rujukan, yang bertindak sebagai alias kepada lokasi ingatan tertentu. Walau bagaimanapun, Python tidak menyokong rujukan gaya C secara asli.
Sebaliknya, kami boleh menggunakan kebolehubahsuaian Python dan keupayaan alias. Aliasing merujuk kepada keupayaan untuk mempunyai beberapa pembolehubah menunjuk ke objek yang sama dalam ingatan. Walau bagaimanapun, pendekatan ini berbeza daripada rujukan C sebenar dan harus digunakan dengan berhati-hati.
Kita boleh mencipta kelas tersuai, seperti Rujukan, untuk mensimulasikan tingkah laku rujukan:
<code class="python">class Reference: def __init__(self, val): self._value = val # Refers to the original value without copying def get(self): return self._value def set(self, val): self._value = val</code>
Dengan membungkus nilai di dalam objek Rujukan, berbilang pembolehubah boleh merujuk kepada nilai asas yang sama. Apabila nilai dalam objek Rujukan diubah suai, semua pembolehubah yang menunjuk kepadanya akan mencerminkan perubahan.
Teknik ini membenarkan tingkah laku yang serupa dengan rujukan C tanpa mengorbankan fleksibiliti Python. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa rujukan tersuai ini tidak mempunyai semantik yang sama seperti rujukan C sebenar.
Atas ialah kandungan terperinci Adakah Pengubahsuaian Pembolehubah melalui Perubahan Rujukan Mungkin dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!