Jika kita mengirimkan daftar sebagai parameter ke suatu fungsi dan mengubah parameter, daftar asli juga berubah. Ini karena list adalah tipe yang bisa berubah, ketika kita meneruskan list ke suatu fungsi, kita meneruskan list yang sama
def my_fun(my_list): my_list.append(1) return my_list x = [1, 2, 3] y = my_fun(x) print(f"x: {x}, y: {y}") # x, y are both [1, 2, 3, 1]
Bagaimana kita bisa meneruskan "nilai" dari daftar ini alih-alih "referensinya"?
- mengiris. my_fun(x[:])_
- daftar(). my_fun(list(x))
- list.copy(). my_fun(x.copy())_
- copy.copy(). my_fun(copy.copy(x))_
- copy.deepcopy(). my_fun(copy.deepcopy(x))_
Empat cara pertama hanya membuat salinan dangkal dari daftar asli. Mereka hanya berfungsi untuk daftar sederhana yang terdiri dari tipe yang tidak dapat diubah, misalnya, daftar int. Jika elemen daftar itu sendiri adalah tipe yang dapat diubah, mereka tidak akan berfungsi
Argumen yang diberikan setelah nama program di shell baris perintah dari sistem operasi dikenal sebagai Argumen Baris Perintah. Python menyediakan berbagai cara untuk menangani jenis argumen ini. Salah satunya adalah modul sys_
Modul sys
Modul adalah file yang berisi definisi dan pernyataan Python. Modul sys menyediakan fungsi dan variabel yang digunakan untuk memanipulasi berbagai bagian lingkungan runtime Python. Modul ini menyediakan akses ke beberapa variabel yang digunakan atau dikelola oleh juru bahasa dan ke fungsi yang berinteraksi kuat dengan juru bahasa
sys. argumen
sys.argv digunakan dalam python untuk mengambil argumen baris perintah saat runtime. Agar suatu program dapat menggunakannya, itu harus diimpor dari modul "sys". Argumen yang diperoleh berupa array bernama sys.argv
Catatan. sys.argv[0] memberi nama program dan indeks berikut berfungsi seperti anggota array
Mendekati
Nama programnya adalah “cmdlist. py”
- Bekerja dengan baris perintah. Pertimbangkan kode di bawah ini yang ditulis dalam cmdlis. py
import sys
print(sys.argv0sys.argv1sys.argv2sys.argv3
print(sys.argv6sys.argv7
Keluaran
- Memanggil daftar menggunakan baris perintah
import sys
print (sys.argv0sys.argv1sys.argv2sys.argv3
sys.argv9sys.argv[0]0 sys.argv[0]1sys.argv[0]2sys.argv[0]3
print sys.argv[0]5
Keluaran
- Bekerja dengan daftar yang dipanggil oleh baris perintah
sys. argv adalah larik string. Jadi, argumen apa pun yang diteruskan ke sana adalah string sehingga untuk dapat digunakan dengan benar, kita harus mengubahnya menjadi formulir daftar yang sesuai- Program untuk mengambil daftar sebagai argumen baris perintah dan mengubahnya menjadi bentuk daftar yang tepat
import sys
print(sys.argv0sys.argv1sys.argv2sys.argv3
________13______7sys.argv[0]0 import9sys0sys.argv[0]2sys.argv3
sys.argv9sys.argv[0]0 sys.argv[0]1sys.argv[0]2sys7sys.argv[0]2sys9 0sys.argv[0]2________12______3
sys.argv9sys.argv[0]0 5 6 7
9 0 1 2
3print 5
Keluaran
- Program untuk menemukan jumlah semua anggota daftar
Juga, tetap temukan untuk mengubah anggota ke tipe data yang diperlukan jika bukan stringimport sys
print (print2sys.argv1sys.argv2sys.argv3
import7sys.argv[0]0import9sys0sys.argv[0]2sys.argv3
sys.argv9sys.argv[0]0sys.argv[0]1sys.argv[0]2sys7sys.argv[0]2sys9 0sys.argv[0]2sys.argv[0]3
sys.argv9sys.argv[0]0 5sys.argv06 7
sys.argv09sys.argv[0]0 sys.argv11sys.argv12 5 9 0 1 sys.argv17
sys.argv19sys.argv[0]0 sys.argv2
9 0 1 sys.argv26
3sys.argv19sys.argv29sys.argv[0]0 0
print(sys.argv34sys.argv35
Keluaran
- Program untuk mengambil daftar sebagai argumen baris perintah dan mengubahnya menjadi bentuk daftar yang tepat
- Bekerja dengan banyak daftar yang diambil melalui baris perintah
import sys
print (sys.argv0sys.argv1sys.argv2sys.argv3
________13______7sys.argv[0]0 import9sys0sys.argv[0]2sys.argv3
sys.argv9sys.argv[0]0 sys.argv[0]1sys.argv[0]2sys7sys.argv[0]2sys9 0sys.argv[0]2________12______3
sys.argv9sys.argv[0]0 5 6 7
sys.argv09sys.argv[0]0 sys.argv11sys.argv12 5 9 0 1 sys.argv17
sys.argv19sys.argv[0]0 sys.argv2
9 0 1 sys.argv26
3sys.argv19sys.argv29sys.argv[0]0 0
print(sys.argv34sys.argv35
________13______7sys.argv[0]0 import9sys0sys.argv00sys.argv3
sys.argv02sys.argv[0]0 sys.argv[0]1sys.argv00________9______7sys.argv[0]2sys9 0sys.argv[0]2________12______3
Bisakah saya memberikan daftar sebagai argumen dengan Python?
Anda dapat mengirim tipe data apa pun dari argumen ke suatu fungsi (string, angka, daftar, kamus, dll. ), dan akan diperlakukan sebagai tipe data yang sama di dalam fungsi .Bagaimana Anda memberikan nilai daftar dengan Python?
Ini karena list adalah tipe yang dapat diubah, ketika kita meneruskan list ke suatu fungsi, kita meneruskan list yang sama. .mengiris. my_fun(x[. ])daftar(). my_fun(daftar(x))daftar. menyalin(). my_fun(x. menyalin())menyalin. menyalin(). my_fun(salin. salinan(x))menyalin. salinan dalam(). my_fun(salin. salinan dalam (x))Bagaimana cara melewatkan daftar sebagai argumen baris perintah?
Untuk mendapatkan akses ke argumen yang diteruskan di shell baris perintah dengan Python, kami menggunakan sys. argumen. Argumen di sysBagaimana Anda melewatkan banyak daftar sebagai parameter di Python?
Kita dapat meneruskan banyak argumen ke fungsi python dengan menentukan sebelumnya parameter formal dalam definisi fungsi .