Rumah > Artikel > pembangunan bahagian belakang > Pengaturcaraan Python: Garis Panduan Asas Mengenai Nilai Pulangan Fungsi dan Amalan Terbaik
Artikel ini ialah artikel terakhir tentang topik fungsi Ia memperkenalkan nilai pulangan fungsi dan beberapa garis panduan amalan terbaik asas untuk fungsi penulisan.
Nilai pulangan fungsi ialah salah satu perkara yang meletakkan Python di hadapan pesaingnya. Dalam kebanyakan bahasa lain, fungsi biasanya hanya dibenarkan untuk mengembalikan objek, tetapi dalam Python anda boleh mengembalikan tuple - yang bermaksud apa sahaja yang anda mahukan boleh dikembalikan. Ciri ini membolehkan pengaturcara menulis perisian yang jauh lebih sukar, atau pastinya lebih membosankan, untuk menulis dalam bahasa lain. Kami telah mengatakan bahawa untuk mengembalikan sesuatu daripada fungsi, kami perlu menggunakan pernyataan pulangan diikuti dengan perkara yang ingin kami kembalikan. Terdapat berbilang penyata pulangan dalam badan fungsi mengikut keperluan.
Sebaliknya, jika dalam badan fungsi kita tidak mengembalikan apa-apa, atau kita memanggil pernyataan pulangan "telanjang", fungsi itu akan mengembalikan Tiada. Tingkah laku ini tidak berbahaya apabila tidak diperlukan, tetapi ia juga membolehkan anda membuat beberapa corak yang menarik, mengesahkan bahawa Python ialah bahasa yang sangat konsisten.
Kami mengatakan ia tidak berbahaya kerana anda tidak pernah dipaksa untuk mengumpul hasil panggilan fungsi. Perkara berikut akan menunjukkan kepada anda apa yang dikatakan melalui contoh:
# 返回none值 def func(): pass func() # 这个调用是没有接收的,将丢失 a = func() # 这个调用被a接收 print(a) # prints: None
Perhatikan bahawa keseluruhan badan fungsi hanya terdiri daripada pernyataan lulus. Seperti yang diberitahu oleh dokumentasi rasmi, pas adalah larangan kerana apabila ia dilaksanakan, tiada apa yang berlaku. Ia berguna sebagai pemegang tempat apabila pernyataan diperlukan secara sintaksis tetapi tidak memerlukan pelaksanaan kod. Dalam bahasa lain, kita mungkin hanya menyatakan ini dengan sepasang pendakap kerinting ({}), yang mentakrifkan skop kosong tetapi dalam Python, skop ditakrifkan oleh kod inden, jadi pernyataan seperti pas diperlukan.
Juga ambil perhatian bahawa panggilan pertama ke func() mengembalikan nilai yang tidak diterima (Tiada). Seperti yang kami nyatakan sebelum ini, tidak perlu menerima nilai pulangan panggilan fungsi.
Ini bagus, tetapi tidak begitu menarik, bagaimana kalau kita menulis fungsi yang menyeronokkan? Ingat kita telah membincangkan fungsi faktorial. Mari kita tulis pelaksanaan kita sendiri di sini (untuk kesederhanaan, kami menganggap bahawa fungsi itu sentiasa dipanggil dengan betul dengan nilai yang sesuai, jadi kami tidak perlu menyemak parameter input):
# 阶乘函数,返回单个值 def factorial(n): if n in (0, 1): return 1 result = n for k in range(2, n): result *= k return result f5 = factorial(5) # f5 = 120
Perhatikan bahawa kami mempunyai dua Titik pulangan. Jika n ialah 0 atau 1, maka 1 dikembalikan. Jika tidak, kami melakukan pengiraan yang diperlukan dan mengembalikan hasilnya.
Petua: Dalam Python, adalah perkara biasa untuk menggunakan operator in untuk semakan ahli, seperti yang kita lakukan dalam contoh sebelumnya, dan bukannya semakan yang lebih terperinci:
jika n = = 0 atau n == 1:
…
Sekarang cuba tulis fungsi ini dengan lebih ringkas:
# 返回单个值示例.2 from functools import reduce from operator import mul def factorial2(n): return reduce(mul, range(1, n + 1), 1) f5 = factorial(5) # f5 = 120
Contoh mudah ini menunjukkan bagaimana Python boleh menjadi kedua-duanya elegan dan ringkas. Pelaksanaan ini boleh dibaca walaupun kita tidak pernah melihat reduce() atau mul(). Jika anda tidak dapat membaca atau memahaminya, luangkan masa beberapa minit untuk melakukan beberapa penyelidikan dokumentasi Python sehingga anda memahami tingkah lakunya. Mampu mencari fungsi dalam dokumentasi dan memahami kod yang ditulis oleh orang lain adalah tugas yang perlu dilakukan oleh setiap pembangun, jadi jadikan ia satu cabaran.
Petua: Belajar melihat bantuan yang disertakan dengan Python Pastikan anda mencari fungsi help(), yang sangat berguna apabila meneroka menggunakan konsol.
Seperti yang kami nyatakan sebelum ini, tidak seperti kebanyakan bahasa lain, Python menjadikannya sangat mudah untuk mengembalikan berbilang objek daripada fungsi. Ciri ini membuka kemungkinan yang tidak berkesudahan dan membolehkan anda membuat kod dalam gaya yang sukar untuk dihasilkan semula dalam bahasa lain. Pemikiran kita terhad oleh alat yang kita gunakan. Oleh itu, apabila Python memberi anda lebih banyak kebebasan daripada bahasa lain, ia meningkatkan kebolehan kreatif anda.
Mengembalikan berbilang nilai sangat mudah: hanya gunakan tupel (eksplisit atau tersirat). Mari lihat contoh mudah yang meniru fungsi terbina dalam divmod():
# 返回多个值 def moddiv(a, b): return a // b, a % b print(moddiv(20, 7)) # prints (2, 6)
Kita boleh membungkus bahagian tebal kod sebelumnya dalam kurungan untuk menjadikannya tuple eksplisit, tetapi tidak perlu buat ini. Fungsi di atas mengembalikan kedua-dua hasil pembahagian dan bakinya.
Apabila menulis fungsi, adalah sangat berguna untuk mengikuti beberapa garis panduan amalan terbaik supaya anda boleh menulisnya dengan baik. Mari lihat garis panduan ini untuk membantu anda memahami dan menggunakan fungsi dengan lebih baik.
1) Fungsi hanya boleh melakukan satu perkara
Fungsi yang melakukan satu perkara mudah untuk diterangkan dalam satu ayat. Fungsi yang melaksanakan pelbagai tugas boleh difaktorkan semula kepada fungsi yang lebih kecil yang melaksanakan satu tugas. Fungsi yang lebih kecil ini secara amnya lebih mudah dibaca dan difahami.
2) Fungsi hendaklah kecil
Semakin kecil ia, lebih mudah untuk menguji dan menulisnya, jadi mereka lebih fokus untuk melakukan satu perkara sahaja.
3) Lebih sedikit parameter input lebih baik
Fungsi yang menerima sejumlah besar parameter dengan cepat menjadi tidak terurus (antara masalah lain). Apabila lebih banyak parameter input diperlukan, pertimbangkan mengikut kesesuaian, seperti pemfaktoran semula ke dalam objek kelas atau data komposit lain.
4) Nilai pulangan fungsi hendaklah konsisten
Memulangkan Palsu dan mengembalikan Tiada satu pun bukan perkara yang sama, walaupun dalam konteks Boolean, nilainya adalah Palsu. Palsu bermaksud kami mempunyai maklumat (iaitu Palsu), manakala Tiada bermaksud tiada maklumat. Apabila boleh, tulis fungsi yang kembali dengan cara yang konsisten tanpa mengira apa yang berlaku dalam logiknya.
5)函数不应该有副作用
换句话说,函数不应该影响调用它们的值。这可能是目前最难理解的一条实践性原则,所以这里给出一个使用列表的示例。在下面的代码中,注意如何不使用sorted()函数对numbers进行排序,该函数实际上返回的是已排序的数字副本。相反,list.sort()方法作用于numbers对象本身,这很好,因为它是一个方法(属于对象的函数,因此有权修改它):
>>> numbers = [4, 1, 7, 5] >>> sorted(numbers) # 不会排序原始的'numbers' 数字列表 [1, 4, 5, 7] >>> numbers # 验证一下 [4, 1, 7, 5] # 很好,没有改变原始数据对象 >>> numbers.sort() # 这将实质性影响原始列表 >>> numbers [1, 4, 5, 7]
所以,遵循以上这些常规的基本指导原则,将有益于你写出更好的函数,为你实现更好的服务。
到此关于Python函数的主体性知识就介绍完了——函数定义语法、输入参数定义以及相关规则、返回值实现和多返回值等,并简单总结了基于最佳实践的一些有益基本指导原则。请多加练习和体会,以便更好的理解和掌握作为Python的核心特性之一的函数。
Atas ialah kandungan terperinci Pengaturcaraan Python: Garis Panduan Asas Mengenai Nilai Pulangan Fungsi dan Amalan Terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!