fungsi Python
Fungsi adalah organisasi yang baik, dapat digunakan kembali, digunakan untuk mencapai segmen kode tunggal, atau fungsi yang terkait.
Fungsi dapat diterapkan untuk meningkatkan modularitas dan menggunakan kembali kode. Anda sudah tahu bahwa Python menyediakan banyak fungsi built-in, seperti cetak (). Tapi Anda juga dapat membuat fungsi sendiri, yang disebut fungsi yang ditetapkan pengguna.
Mendefinisikan fungsi
Anda dapat menentukan fungsi dari fungsi yang Anda inginkan, aturan sederhana berikut:
- Fungsi blok def kata kunci di awal, diikuti dengan nama fungsi dan pengenal dalam tanda kurung ().
- Parameter masuk dan argumen harus ditempatkan dalam tanda kurung di tengah. Hal ini dapat digunakan untuk menentukan parameter antara kurung.
- Baris pertama dari pernyataan fungsi opsional dapat menggunakan dokumen tali - digunakan untuk deskripsi fungsi.
- Fungsi konten dimulai dengan usus besar dan lekukan.
- kembali [ekspresi] akhir fungsi, opsional mengembalikan nilai ke pemanggil. kembali tanpa setara ekspresi untuk kembali ada.
tatabahasa
def functionname( parameters ): "函数_文档字符串" function_suite return [expression]
Secara default, nama parameter dan parameter nilai dalam urutan didefinisikan dalam deklarasi fungsi cocok up.
contoh
Berikut ini adalah fungsi Python sederhana, lewat itu string sebagai parameter, lalu cetak ke perangkat tampilan standar.
def printme( str ): "打印传入的字符串到标准显示设备上" print str return
fungsi panggilan
Mendefinisikan fungsi hanya untuk nama fungsi, menentukan parameter, dan struktur kode blok berisi fungsi.
Setelah selesai dari struktur dasar dari fungsi ini, Anda dapat melakukan fungsi panggilan lain untuk dieksekusi langsung dari prompt Python.
Contoh-contoh berikut disebut printme (fungsi):
#!/usr/bin/python # -*- coding: UTF-8 -*- # 定义函数 def printme( str ): "打印任何传入的字符串" print str; return; # 调用函数 printme("我要调用用户自定义函数!"); printme("再次调用同一函数");
Contoh output di atas:
我要调用用户自定义函数! 再次调用同一函数
Parameter yang dikirimkan oleh nilai dan lulus parameter dengan referensi
Semua parameter (argumen) di Python tersebut diteruskan oleh referensi. Jika Anda mengubah parameter dalam suatu fungsi, maka fungsi ini disebut fungsi, parameter asli juga berubah. Sebagai contoh:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 可写函数说明 def changeme( mylist ): "修改传入的列表" mylist.append([1,2,3,4]); print "函数内取值: ", mylist return # 调用changeme函数 mylist = [10,20,30]; changeme( mylist ); print "函数外取值: ", mylist
Dan dilewatkan ke fungsi dari objek pada akhir untuk menambahkan konten baru menggunakan referensi yang sama. Jadi hasil output adalah sebagai berikut:
函数内取值: [10, 20, 30, [1, 2, 3, 4]] 函数外取值: [10, 20, 30, [1, 2, 3, 4]]
parameter
Berikut ini adalah jenis parameter formal dapat digunakan saat memanggil fungsi:
- parameter wajib
- argumen kata kunci
- Parameter default
- parameter variabel-panjang
parameter wajib
parameter wajib yang harus diteruskan ke fungsi dalam urutan yang benar. Ketika jumlah panggilan dan harus deklarasi yang sama.
printme panggilan () fungsi, Anda harus lulus dalam parameter, atau kesalahan sintaks akan terjadi:
#!/usr/bin/python # -*- coding: UTF-8 -*- #可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme();
Contoh output di atas:
Traceback (most recent call last): File "test.py", line 11, in <module> printme(); TypeError: printme() takes exactly 1 argument (0 given)
argumen kata kunci
argumen kata kunci dan fungsi panggilan dekat pemanggilan fungsi hubungan menggunakan argumen kata kunci untuk menentukan nilai parameter berlalu.
Bila menggunakan parameter kunci memungkinkan parameter fungsi agar panggilan tidak konsisten dengan pernyataan, karena interpreter Python mampu menyamai nilai parameter menggunakan nama parameter.
Fungsi Contoh berikut printme () disebut dengan nama parameter:
#!/usr/bin/python # -*- coding: UTF-8 -*- #可写函数说明 def printme( str ): "打印任何传入的字符串" print str; return; #调用printme函数 printme( str = "My string");
Contoh output di atas:
My string
Berikut contoh dapat memesan argumen kata kunci tidak menunjukkan penting lebih jelas:
#!/usr/bin/python # -*- coding: UTF-8 -*- #可写函数说明 def printinfo( name, age ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return; #调用printinfo函数 printinfo( age=50, name="miki" );
Contoh output di atas:
Name: miki Age 50
Parameter default
Ketika fungsi ini disebut, nilai default jika parameter tidak lulus, nilai default dianggap. Secara default mencetak pertemuan rutin usia, jika usia tidak lulus:
#!/usr/bin/python # -*- coding: UTF-8 -*- #可写函数说明 def printinfo( name, age = 35 ): "打印任何传入的字符串" print "Name: ", name; print "Age ", age; return; #调用printinfo函数 printinfo( age=50, name="miki" ); printinfo( name="miki" );
Contoh output di atas:
Name: miki Age 50 Name: miki Age 35
parameter variabel-panjang
Anda mungkin perlu fungsi yang dapat menangani lebih dari deklarasi asli parameter. Parameter ini disebut parameter panjang variabel, dan dua jenis parameter yang berbeda, tidak menyebut deklarasi. Sintaks dasar adalah sebagai berikut:
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]
Dengan tanda bintang (*) akan disimpan dalam nama variabel semua variabel yang tidak disebutkan namanya parameter. parameter lulus mungkin sedikit pilihan. Contoh berikut:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 可写函数说明 def printinfo( arg1, *vartuple ): "打印任何传入的参数" print "输出: " print arg1 for var in vartuple: print var return; # 调用printinfo 函数 printinfo( 10 ); printinfo( 70, 60, 50 );
Contoh output di atas:
输出: 10 输出: 70 60 50
fungsi anonim
python menggunakan lambda untuk membuat fungsi anonim.
- Hanya ekspresi lambda, fungsi tubuh jauh lebih sederhana daripada def.
- tubuh adalah ekspresi lambda, bukan blok kode. Kami hanya dapat paket logika terbatas ke dalam ekspresi lambda.
- Fungsi lambda memiliki namespace sendiri, dan tidak dapat diakses di luar daftar argumen sendiri atau parameter namespace global.
- Meskipun fungsi lambda terlihat hanya menulis satu baris, tetapi tidak sama dengan fungsi inline di C atau C ++, tujuan terakhir ini tidak ditempati saat memanggil fungsi memori tumpukan kecil untuk meningkatkan efisiensi operasional.
tatabahasa
Lambda fungsi sintaks hanya berisi satu pernyataan, sebagai berikut:
lambda [arg1 [,arg2,.....argn]]:expression
Contoh berikut:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 可写函数说明 sum = lambda arg1, arg2: arg1 + arg2; # 调用sum函数 print "相加后的值为 : ", sum( 10, 20 ) print "相加后的值为 : ", sum( 20, 20 )
Contoh output di atas:
相加后的值为 : 30 相加后的值为 : 40
pernyataan kembali
Pernyataan kembali [ekspresi] untuk keluar fungsi selektif ke pemanggil mengembalikan ekspresi. pernyataan kembali tanpa parameter kembali Tidak ada. Tidak ada contoh sebelumnya menunjukkan bagaimana mengembalikan nilai, contoh berikut akan menunjukkan cara untuk melakukannya:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 可写函数说明 def sum( arg1, arg2 ): # 返回2个参数的和." total = arg1 + arg2 print "函数内 : ", total return total; # 调用sum函数 total = sum( 10, 20 );
Contoh output di atas:
函数内 : 30
Cakupan variabel
Semua variabel dalam sebuah program yang bukan posisi yang bisa diakses. Akses tergantung pada di mana variabel ditugaskan.
- Variabel global
- variabel lokal
variabel global dan lokal
Definisi fungsi variabel internal yang memiliki ruang lingkup lokal, sebagaimana didefinisikan dalam fungsi luar memiliki lingkup global.
variabel lokal hanya dapat dideklarasikan di dalam fungsi dari akses ke variabel global dapat diakses di seluruh prosedur. Ketika Anda memanggil fungsi, semua nama variabel dalam deklarasi fungsi akan ditambahkan ke ruang lingkup. Contoh berikut:
#!/usr/bin/python # -*- coding: UTF-8 -*- total = 0; # 这是一个全局变量 # 可写函数说明 def sum( arg1, arg2 ): #返回2个参数的和." total = arg1 + arg2; # total在这里是局部变量. print "函数内是局部变量 : ", total return total; #调用sum函数 sum( 10, 20 ); print "函数外是全局变量 : ", total
Contoh output di atas:
函数内是局部变量 : 30 函数外是全局变量 : 0