Ketika kita melihat perilaku sebenarnya dari ketiga pernyataan return maka tidak ada perbedaan. Semua ini mengembalikan Tidak ada. Namun, itu tergantung pada situasi di mana waktu dan di mana mereka akan digunakan. Show Di bawah ini adalah beberapa petunjuk yang akan menghilangkan keraguan Anda tentang bagaimana metode yang berbeda harus digunakan. - Di mana menggunakan pengembalian Tidak ada. - Pernyataan kembali dimaksudkan untuk mengembalikan nilai untuk digunakan nanti, dan dalam hal ini, ia mengembalikan Tidak Ada. Di bawah ini adalah contoh untuk mengembalikan Tidak ada
Di mana menggunakan pengembalian. -Pernyataan return digunakan untuk alasan yang sama seperti break digunakan dalam perulangan. Ini digunakan untuk keluar dari seluruh fungsi. Di bawah ini adalah contoh mengenai pernyataan pengembalian Dalam contoh yang disebutkan di bawah, misalkan kita memiliki 15 balok dan kita tahu salah satunya berisi pisau. Jadi untuk mengetahui mana yang berisi pisau, kita akan melewati setiap blok satu per satu untuk memeriksa apakah mereka memiliki pisau. Jika kita memukul balok yang benar dengan pisau, kita bisa keluar dari fungsi karena kita tahu hanya ada satu pisau dan tidak ada alasan untuk memeriksa sisa balok. Jadi untuk keluar setelah mendapatkan pisau kita akan menggunakan return
Di mana kami tidak akan menggunakan pengembalian sama sekali. -Sedangkan jika tidak menggunakan return maka akan mengembalikan None juga. Di bawah ini adalah contoh di mana kami telah menetapkan nama ibu seseorang, dan kemudian fungsinya keluar setelah berhasil diselesaikan tetapi jika Anda akan melakukan itu, lebih baik membuat daftar baru di dalam fungsi balik dan mengembalikannya, daripada memutasi num di tempat lalu mengembalikannya Anda tidak bisa; . Itu sebabnya NameError dilempar. Inilah yang saya jalankan persis seperti yang Anda posting, di bash shell di Linux Piton
Kecuali jika Anda menjalankan kode ini di beberapa jenis IDE atau lingkungan lain yang secara diam-diam mengoreksi kasus variabel Anda, inilah hasil yang harus Anda dapatkan
Oke, saya memang melihat beberapa di antaranya muncul secara acak setelah saya menyalin-tempel, dan bertanya-tanya bagaimana mereka sampai di sana. Kupikir aku menghapus semuanya. Saya pikir itu ada hubungannya dengan saya menekan opsi "pratinjau" berulang kali, tetapi saya bisa saja salah. Jadi tidak tahu bagaimana mereka sampai di sana, tapi terima kasih atas umpan baliknya
Ya tapi itu hal yang salah untuk diperbaiki, baca terus Tidak perlu mengembalikan apa pun dari nextPermutation karena ini mengubah argumen daftar di tempatnya. Itu harus disebut sebagai Piton
Tidak terlalu. Saya telah memposting sebelumnya tentang bagaimana efek samping tidak diinginkan, namun untuk fungsi utilitas seperti ini, mengubah daftar asli bukanlah efek samping, itu adalah satu-satunya fungsi yang dilakukan. Bandingkan dengan daftar Python. reverse() dan daftar. sort() metode yang juga bermutasi di tempat Ini akan sangat mahal
Saya menduga kode ini diambil dari pengajuan ke pertanyaan LeetCode atau yang serupa. Itu membutuhkan kode Anda untuk disusun dengan cara ini, dengan kelas Solusi dan fungsi yang melakukan pekerjaan sebenarnya sebagai metode di dalamnya. Agak aneh, tapi begitulah cara mereka melakukannya Komentar yang sama seperti di atas Ini valid, tetapi begitu juga dengan cara OP. Saya percaya situs LeetCode secara otomatis memformat kode kerangka Python itu memberi Anda cara kode OP diformat. Cara itu tidak salah, meski tidak sesuai dengan preferensi pribadi Anda Terkadang orang memilih untuk mengimplementasikan sesuatu sendiri sehingga mereka dapat melihat cara kerjanya Juga, fungsi bawaan tidak memberi Anda cara apa pun untuk memulai dari permutasi yang dipilih dan mendapatkan yang berikutnya, itu hanya mengulangi semuanya dari awal hingga akhir. Jadi menggunakannya berarti Anda harus mengulang melalui permutasi yang dikembalikan bawaan sampai Anda menemukan yang cocok dengan yang Anda berikan, dan kemudian mengembalikan yang berikutnya. Itu mungkin lebih lambat daripada mencari tahu permutasi berikutnya secara langsung
Poin bagus. https. //kode leet. com/masalah/permutasi/ misalnya Ini bukan hanya preferensi pribadi, 0 adalah mabuk yang tidak relevan dari Python 2 dan tidak memiliki tempat dalam kode yang ditulis pada tahun 2022. Ini bukan cara leetcode menampilkannya di tautan di atasSepakat;
Ya, tapi apakah itu "mahal" itu relatif. Untuk banyak program, terlalu murah untuk dikhawatirkan TIDAK. Mengkloning daftar tidak akan menyalin objek Piton _Bahkan untuk daftar yang berisi objek yang dapat diubah, Anda memerlukan 1 jika Anda ingin objek disalin jugaKode _
Ah, oke, sekarang aku mengerti maksudmu. Tapi ini benar terlepas dari jenis objek apa yang disimpan daftar, jadi saya tidak mengerti maksud dari pernyataan Anda bahwa "berarti jika mereka primitif". Apa yang Anda gambarkan di sini dilakukan setiap kali daftar dikloning, apakah daftar tersebut menyimpan "primitif" atau tidak Apakah maksud Anda bilangan bulat cukup kecil sehingga dibuat sebelumnya oleh juru bahasa (mirip dengan lajang seperti Tidak Ada)? Seperti yang saya pahami kode C internal untuk objek daftar, tidak ada yang memengaruhi cara daftar menyimpan petunjuk secara internal. Daftar 2 masih harus memiliki lima entri dalam daftar penunjuk tertaut internal, meskipun setiap penunjuk entri identik (semuanya menunjuk ke objek None yang dibuat sebelumnya oleh penafsir)
Ups, Anda benar sekali. . Ini masih O(n) tetapi dengan konstanta yang cukup kecil Pokoknya Anda meminta sesi interaktif; Piton _Kode _
Ini mengasumsikan bahwa mengetahui opsi mana yang merupakan opsi "paling tidak mengherankan" untuk nama fungsi tertentu adalah hal yang sederhana. Apakah itu? Nama fungsi yang relevan di OP adalah 3. Hanya dengan melihat namanya, apakah Anda berharap ini mengubah daftar di tempatnya?
Nama yang dipilih dengan baik dapat membantu ini Tidak, nama fungsi yang relevan adalah 5
Karena ini adalah kata kerja, saya mengharapkannya melakukan sesuatu. Akan lebih baik dinamai 6 karena itulah yang dilakukannya (dan untuk menghindari kebingungan dengan metode 5 objek daftar). Fungsi yang mengembalikan daftar terbalik sebagian akan lebih baik diberi nama 8Poin yang saya coba sampaikan adalah bahwa suatu fungsi tidak boleh memutasikan daftar sekaligus mengembalikan daftar yang dimutasi; . Sebagai poin sekunder, saya berpendapat bahwa dalam hal ini tidak ada keuntungan dalam mengembalikan daftar baru jadi saya akan memilih mutasi dengan nilai pengembalian batal Apakah boleh mengembalikan None dengan Python?Menggunakan pengembalian Tidak Ada
. Nilai ini Tidak ada kemudian dapat digunakan di tempat lain. return None tidak pernah digunakan jika tidak ada kemungkinan nilai kembalian lain dari fungsi .
Apakah mengembalikan Tidak ada praktik yang baik?Mengembalikan Tidak Ada pada umumnya adalah bentuk yang buruk artinya "semuanya baik-baik saja. " Jika Anda memiliki semacam pencarian/pengakses, Tidak ada berarti "nilai item tersebut adalah Tidak Ada", dan jika tidak ditemukan, Anda harus membuang pengecualian yang sesuai. |