Python - Fungsi
Halaman SebelumnyaHalaman Berikutnya
Fungsi adalah blok kode yang terorganisir dan dapat digunakan kembali yang digunakan untuk melakukan satu tindakan terkait. Fungsi memberikan modularitas yang lebih baik untuk aplikasi Anda dan penggunaan ulang kode tingkat tinggi.
Seperti yang sudah Anda ketahui, Python memberi Anda banyak fungsi bawaan seperti print(), dll. tetapi Anda juga dapat membuat fungsi Anda sendiri. Fungsi-fungsi ini disebut fungsi yang ditentukan pengguna.
Mendefinisikan Fungsi
Anda dapat menentukan fungsi untuk menyediakan fungsionalitas yang diperlukan. Berikut adalah aturan sederhana untuk mendefinisikan fungsi dalam Python.
-
Blok fungsi dimulai dengan kata kunci def diikuti dengan nama fungsi dan tanda kurung ( ( ) ).
-
Parameter input atau argumen apa pun harus ditempatkan di dalam tanda kurung ini. Anda juga dapat menentukan parameter di dalam tanda kurung ini.
-
Pernyataan pertama dari suatu fungsi dapat berupa pernyataan opsional - string dokumentasi fungsi atau docstring .
-
Blok kode dalam setiap fungsi dimulai dengan titik dua (:) dan diindentasi.
-
Pernyataan return [ekspresi] keluar dari suatu fungsi, secara opsional meneruskan kembali ekspresi ke pemanggil. Pernyataan return tanpa argumen sama dengan return None.
Sintaks
def functionname( parameters ):
"function_docstring"
function_suite
return [expression]
Secara default, parameter memiliki perilaku posisi dan Anda perlu memberi tahu mereka dalam urutan yang sama seperti yang ditentukan.
Contoh
Fungsi berikut mengambil string sebagai parameter input dan mencetaknya pada layar standar.
def printme( str ):
"This prints a passed string into this function"
print str
return
Memanggil Fungsi
Mendefinisikan fungsi hanya memberinya nama, menentukan parameter yang akan disertakan dalam fungsi dan menyusun blok kode.
Setelah struktur dasar suatu fungsi selesai, Anda dapat menjalankannya dengan memanggilnya dari fungsi lain atau langsung dari prompt Python. Berikut adalah contoh untuk memanggil fungsi printme()
Demo Langsung
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str
return;
# Now you can call printme function
printme("I'm first call to user defined function!")
printme("Again second call to the same function")
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
I'm first call to user defined function!
Again second call to the same function
Lulus dengan referensi vs nilai
Semua parameter (argumen) dalam bahasa Python dilewatkan dengan referensi. Ini berarti jika Anda mengubah apa yang dirujuk oleh parameter di dalam suatu fungsi, perubahan tersebut juga mencerminkan kembali dalam fungsi pemanggilan. Misalnya
Demo Langsung
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist.append([1,2,3,4]);
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
Di sini, kami mempertahankan referensi dari objek yang diteruskan dan menambahkan nilai dalam objek yang sama. Jadi, ini akan menghasilkan hasil berikut
Values inside the function: [10, 20, 30, [1, 2, 3, 4]]
Values outside the function: [10, 20, 30, [1, 2, 3, 4]]
Ada satu contoh lagi di mana argumen diteruskan dengan referensi dan referensi ditimpa di dalam fungsi yang dipanggil.
Demo Langsung
#!/usr/bin/python
# Function definition is here
def changeme( mylist ):
"This changes a passed list into this function"
mylist = [1,2,3,4]; # This would assig new reference in mylist
print "Values inside the function: ", mylist
return
# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist
Parameter daftar saya adalah lokal untuk fungsi changeme. Mengubah daftar saya di dalam fungsi tidak memengaruhi daftar saya . Fungsi tidak menyelesaikan apa pun dan akhirnya ini akan menghasilkan hasil berikut
Values inside the function: [1, 2, 3, 4]
Values outside the function: [10, 20, 30]
Argumen Fungsi
Anda dapat memanggil fungsi dengan menggunakan tipe argumen formal berikut −
- Argumen yang diperlukan
- Argumen kata kunci
- Argumen default
- Argumen panjang variabel
Argumen yang diperlukan
Argumen yang diperlukan adalah argumen yang diteruskan ke fungsi dalam urutan posisi yang benar. Di sini, jumlah argumen dalam pemanggilan fungsi harus sama persis dengan definisi fungsi.
Untuk memanggil fungsi printme() , Anda pasti harus memberikan satu argumen, jika tidak maka akan memberikan kesalahan sintaks sebagai berikut
Demo Langsung
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str
return;
# Now you can call printme function
printme()
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
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 terkait dengan pemanggilan fungsi. Saat Anda menggunakan argumen kata kunci dalam panggilan fungsi, pemanggil mengidentifikasi argumen dengan nama parameter.
Ini memungkinkan Anda untuk melewatkan argumen atau menempatkannya di luar urutan karena interpreter Python dapat menggunakan kata kunci yang disediakan untuk mencocokkan nilai dengan parameter. Anda juga dapat melakukan panggilan kata kunci ke printme() berfungsi dengan cara berikut
Demo Langsung
#!/usr/bin/python
# Function definition is here
def printme( str ):
"This prints a passed string into this function"
print str
return;
# Now you can call printme function
printme( str = "My string")
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
My string
Contoh berikut memberikan gambaran yang lebih jelas. Perhatikan bahwa urutan parameter tidak penting.
Demo Langsung
#!/usr/bin/python
# Function definition is here
def printinfo( name, age ):
"This prints a passed info into this function"
print "Name: ", name
print "Age ", age
return;
# Now you can call printinfo function
printinfo( age=50, name="miki" )
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
Name: miki
Age 50
Argumen default
Argumen default adalah argumen yang mengasumsikan nilai default jika nilai tidak disediakan dalam pemanggilan fungsi untuk argumen itu. Contoh berikut memberikan ide tentang argumen default, ia mencetak usia default jika tidak lulus −
Demo Langsung
#!/usr/bin/python
# Function definition is here
def printinfo( name, age = 35 ):
"This prints a passed info into this function"
print "Name: ", name
print "Age ", age
return;
# Now you can call printinfo function
printinfo( age=50, name="miki" )
printinfo( name="miki" )
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
Name: miki
Age 50
Name: miki
Age 35
Argumen panjang variabel
Anda mungkin perlu memproses fungsi untuk lebih banyak argumen daripada yang Anda tentukan saat mendefinisikan fungsi. Argumen ini disebut panjang variabel argumen dan tidak disebutkan dalam definisi fungsi, tidak seperti argumen wajib dan default.
Sintaks untuk fungsi dengan argumen variabel non-kata kunci adalah ini −
def functionname([formal_args,] *var_args_tuple ):
"function_docstring"
function_suite
return [expression]
Tanda bintang (*) ditempatkan sebelum nama variabel yang menyimpan nilai semua argumen variabel bukan kata kunci. Tuple ini tetap kosong jika tidak ada argumen tambahan yang ditentukan selama pemanggilan fungsi. Berikut ini adalah contoh sederhana
Demo Langsung
#!/usr/bin/python
# Function definition is here
def printinfo( arg1, *vartuple ):
"This prints a variable passed arguments"
print "Output is: "
print arg1
for var in vartuple:
print var
return;
# Now you can call printinfo function
printinfo( 10 )
printinfo( 70, 60, 50 )
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
Output is:
10
Output is:
70
60
50
Yang Anonim Fungsi
Fungsi-fungsi ini disebut anonim karena tidak dideklarasikan dengan cara standar dengan menggunakan def kata kunci. Anda dapat menggunakan lambda kata kunci untuk membuat fungsi anonim kecil.
-
Formulir Lambda dapat mengambil sejumlah argumen tetapi hanya mengembalikan satu nilai dalam bentuk ekspresi. Mereka tidak dapat berisi perintah atau beberapa ekspresi.
-
Fungsi anonim tidak dapat menjadi panggilan langsung untuk mencetak karena lambda memerlukan ekspresi
-
Fungsi Lambda memiliki namespace lokalnya sendiri dan tidak dapat mengakses variabel selain yang ada di daftar parameternya dan yang ada di namespace global.
-
Meskipun tampaknya lambda adalah versi satu baris dari suatu fungsi, mereka tidak setara dengan pernyataan sebaris dalam C atau C++, yang tujuannya adalah dengan melewatkan alokasi tumpukan fungsi selama pemanggilan untuk alasan kinerja.
Sintaks
Sintaks lambda fungsi hanya berisi satu pernyataan, yaitu sebagai berikut
lambda [arg1 [,arg2,.....argn]]:expression
Berikut adalah contoh untuk menunjukkan bagaimana lambda bentuk fungsi bekerja
Demo Langsung
#!/usr/bin/python
# Function definition is here
sum = lambda arg1, arg2: arg1 + arg2;
# Now you can call sum as a function
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
Value of total : 30
Value of total : 40
Kembali Pernyataan
Pernyataan return [ekspresi] keluar dari suatu fungsi, secara opsional meneruskan kembali ekspresi ke pemanggil. Pernyataan return tanpa argumen sama dengan return None.
Semua contoh di atas tidak mengembalikan nilai apa pun. Anda dapat mengembalikan nilai dari fungsi sebagai berikut
Demo Langsung
#!/usr/bin/python
# Function definition is here
def sum( arg1, arg2 ):
# Add both the parameters and return them."
total = arg1 + arg2
print "Inside the function : ", total
return total;
# Now you can call sum function
total = sum( 10, 20 );
print "Outside the function : ", total
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
Inside the function : 30
Outside the function : 30
Cakupan Variabel
Semua variabel dalam suatu program mungkin tidak dapat diakses di semua lokasi dalam program itu. Ini tergantung di mana Anda mendeklarasikan variabel.
Lingkup variabel menentukan bagian program di mana Anda dapat mengakses pengenal tertentu. Ada dua lingkup dasar variabel dalam Python
- Variabel global
- Variabel lokal
Variabel global vs. Lokal
Variabel yang didefinisikan di dalam badan fungsi memiliki cakupan lokal, dan variabel yang didefinisikan di luar memiliki cakupan global.
Ini berarti bahwa variabel lokal hanya dapat diakses di dalam fungsi di mana mereka dideklarasikan, sedangkan variabel global dapat diakses di seluruh badan program oleh semua fungsi. Saat Anda memanggil suatu fungsi, variabel yang dideklarasikan di dalamnya dibawa ke dalam ruang lingkup. Berikut ini adalah contoh sederhana
Demo Langsung
#!/usr/bin/python
total = 0; # This is global variable.
# Function definition is here
def sum( arg1, arg2 ):
# Add both the parameters and return them."
total = arg1 + arg2; # Here total is local variable.
print "Inside the function local total : ", total
return total;
# Now you can call sum function
sum( 10, 20 );
print "Outside the function global total : ", total
Ketika kode di atas dijalankan, menghasilkan hasil sebagai berikut
Inside the function local total : 30
Outside the function global total : 0