Python lulus elemen daftar sebagai argumen

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”

  1. 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

    Python lulus elemen daftar sebagai argumen

  2. 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

    Python lulus elemen daftar sebagai argumen

  3. 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

      Python lulus elemen daftar sebagai argumen

    • Program untuk menemukan jumlah semua anggota daftar
      Juga, tetap temukan untuk mengubah anggota ke tipe data yang diperlukan jika bukan string




      import 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

      Python lulus elemen daftar sebagai argumen

  4. 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 sys

    Bagaimana Anda melewatkan banyak daftar sebagai parameter di Python?

    Kita dapat meneruskan banyak argumen ke fungsi python dengan menentukan sebelumnya parameter formal dalam definisi fungsi .