Rumah >pembangunan bahagian belakang >Tutorial Python >Adakah Python Pass-by-Value atau Pass-by-Reference, dan Bagaimana Saya Boleh Mencapai Gelagat Pass-by-Rujukan?

Adakah Python Pass-by-Value atau Pass-by-Reference, dan Bagaimana Saya Boleh Mencapai Gelagat Pass-by-Rujukan?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-26 05:05:11342semak imbas

Is Python Pass-by-Value or Pass-by-Reference, and How Can I Achieve Pass-by-Reference Behavior?

Melalui Pembolehubah melalui Rujukan dalam Python

Semasa menulis kelas untuk ujian, anda telah perasan bahawa parameter dalam Python nampaknya diluluskan oleh nilai dan bukannya rujukan. Artikel ini akan menjelaskan sama ada andaian anda adalah betul dan membimbing anda dalam melaksanakan rujukan lulus dalam Python.

Memahami Nilai Laluan dan Rujukan

Dalam Python, hujah diluluskan melalui rujukan , yang bermaksud bahawa rujukan kepada objek dihantar ke fungsi. Walau bagaimanapun, rujukan ini diluluskan oleh nilai. Tingkah laku ini timbul disebabkan oleh pembezaan antara jenis data boleh ubah dan tidak boleh ubah.

Jenis Data Boleh Ubah dan Tidak Boleh Ubah

  • Jenis data boleh ubah: Jenis data ini boleh diubah suai di tempat. Contohnya termasuk senarai, kamus dan objek yang ditentukan pengguna. Mengubah suai jenis ini dalam fungsi mencerminkan perubahan dalam objek asal.
  • Jenis data tidak boleh ubah: Jenis data ini tidak boleh diubah suai di tempatnya. Rentetan, integer dan tupel termasuk dalam kategori ini. Mengubah suai jenis ini tidak menjejaskan objek asal.

Contoh dengan Senarai Boleh Ubah

Pertimbangkan contoh berikut:

def try_to_change_list_contents(the_list):
    the_list.append('four')

outer_list = ['one', 'two', 'three']
try_to_change_list_contents(outer_list)
print(outer_list)

Memandangkan senarai boleh berubah, parameter the_list ialah rujukan kepada objek outer_list. Dengan menambahkan 'empat' pada the_list, outer_list juga diubah suai.

Contoh dengan Rentetan Tidak Boleh Berubah

Sebaliknya, pertimbangkan contoh ini dengan rentetan:

def try_to_change_string(my_string):
    my_string = 'Changed'

outer_string = 'Original'
try_to_change_string(outer_string)
print(outer_string)

Walaupun berubah pembolehubah my_string dalam fungsi, outer_string kekal tidak berubah. Ini berlaku kerana rentetan tidak boleh ubah dan tidak boleh diubah suai di tempatnya.

Melalui Rujukan dalam Python

Untuk meniru rujukan lalu, apabila pembolehubah asal diubah suai, terdapat beberapa pilihan :

1. Mengembalikan Nilai Baharu: Fungsi boleh mengembalikan nilai baharu, yang boleh diberikan kepada pembolehubah asal di luar fungsi.

2. Mengubah suai Atribut Objek: Jika pembolehubah ialah objek, fungsi boleh mengubah suai salah satu atributnya, yang akan dicerminkan dalam objek asal.

3. Menggunakan Senarai atau Pembungkus: Anda boleh membungkus pembolehubah dalam senarai dan menghantar senarai ke fungsi. Mengubah suai senarai akan menjejaskan pembolehubah asal.

Dengan memahami mekanisme nilai lulus dan rujukan, anda boleh mengubah suai pembolehubah dalam Python dengan berkesan seperti yang dikehendaki.

Atas ialah kandungan terperinci Adakah Python Pass-by-Value atau Pass-by-Reference, dan Bagaimana Saya Boleh Mencapai Gelagat Pass-by-Rujukan?. 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