Function
Fungsi adalah sekelompok statements atau perintah yang dapat dipanggil beberapa kali.
Selain fungsi bawaan, kita dapat membuat fungsi sendiri.
Dalam memanggil suatu fungsi, kita dapat memasukkan argumen untuk melakukan perhitungan yang
diinginkan.
Syntax:
def function_name(parameters):
statement(s)
Contoh:
In [1]:
def sum(a, b):
return a + b
k=sum(10,20)
print("Sum is", k)
print('5 + 4 =', sum(5,4))
Sum is 30
5 + 4 = 9
In [3]:
def conv(x):
if x==1:
return "one"
elif x==2:
return "two"
elif x==3:
return "three"
elif x==4:
return "four"
elif x==5:
return "five"
else:
pass
n=int(input("Enter a number between 1 and 5: "))
print (n, "in words is", conv(n))
Enter a number between 1 and 5: 6
6 in words is None
Latihan
Buat fungsi untuk menghitung luas segi empat dengan input panjang dn lebar (input dari user)
In [5]:
def luas(panjang,lebar):
return panjang*lebar
p = float(input('Masukkan panjang: '))
l = float(input('Masukkan lebar: '))
print('Luas segi empat dengan panjang',p,'dan lebar',l,'adalah',luas(p,l))
Input In [5]
p = float(input('Masukkan panjang: ))
^
SyntaxError: EOL while scanning string literal
Latihan: Buat code untuk menghitung jumlah kata yang diinputkan user
In [10]:
def hitung_kata(kalimat):
kata2 = [Link](' ')
return len(kata2)
kalimat = input('Masukkan suatu kalimat: ')
print('Kalimat yang Anda masukkan terdiri dari',hitung_kata(kalimat),'kata')
Masukkan suatu kalimat: Saya tadi makan nasi jagung dengan sayur lodeh dan lauk ayam
Kalimat yang Anda masukkan terdiri dari 11 kata
In [9]:
a='Samsul amar'
print([Link](' '))
b = [1,2,3,2]
print(len(b))
['Samsul', 'amar']
4
Default Value Parameters
Nilai parameter bisa dibuat default bila user tidak memasukkan nilai tertentu.
Contoh:
In [15]:
def sum(x=20, y=10):
return x+y
print(sum(10))
print(sum(5,8))
print(sum())
print(sum(y = 100))
20
13
30
120
In [ ]:
a = sum(y=100,x=200)
print(a)
Keyword Arguments
Kita bisa memasukkan nama atau keyword dari argument dalam memanggil function
Contoh:
In [16]:
def volume(l, p=5, t=10):
print ('lebar =', l, ', panjang =', p, ' dan tinggi =', t, '. Volume =', l*p*t)
volume(2, 4)
volume(3, t=6)
volume(t=7, l=2)
lebar = 2 , panjang = 4 dan tinggi = 10 . Volume = 80
lebar = 3 , panjang = 5 dan tinggi = 6 . Volume = 90
lebar = 2 , panjang = 5 dan tinggi = 7 . Volume = 70
In [17]:
print(volume(10))
lebar = 10 , panjang = 5 dan tinggi = 10 . Volume = 500
None
In [ ]:
a = volume(3,2,3)
print(a)
Global dan Local Variables
Nilai dari global variable bisa diakses didalam maupun diluar function yang mendeklarasikan global variable
tersebut, sedangkan nilai dari local variable hanya bisa diakses didalam function.
In [33]:
def sum(x,y):
global z
z = 100
return x+y
a= sum(4,5)
print(a)
In [34]:
print(z)
100
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [34] , in <cell line: 2>()
1 print(z)
----> 2 print(x)
NameError: name 'x' is not defined
Contoh:
In [ ]:
def compute(): #contoh function tanpa input argument
global x
x = 10
y = 100
print ("Value of x in compute function is", x)
x += 5
return None
In [ ]:
compute()
compute()
In [ ]:
print(x)
In [ ]:
def dispvalue():
global x
print ("Value of x in dispvalue function is", x)
x-=2
return None
def localcompute():
x = 100
print('Value of x in localcompute function is ',x)
x=0
compute()
print(x)
dispvalue()
localcompute()
compute()
Lambda Function
Untuk fungsi yang hanya satu baris, sering kali tidak diperlukan definisi function, tapi cukup menggunakan
lambda function.
Contoh:
In [31]:
g = lambda x: x**2 + 4*x -10
print(g(10))
130
In [32]:
g = lambda x,y: x**2 + 4*y - x*y
print(g(5,6))
19
Latihan: Buat lambda function untuk menghitung luas lingkaran
In [ ]:
In [35]:
luas = lambda r: 3.14*r**2
print(luas(4))
50.24
Applying Functions to Sequences
Function bisa diaplikasikan untuk suatu sequence dengan menggunakan:
filter()
map()
map()
filter()
sintax:
filter(function, sequence)
Menghasilkan nilai input saat hasil fungsi bernilai True.
Contoh:
In [37]:
def genap(x):
return x % 2 == 0
print(genap(4))
True
In [38]:
evens=filter(genap, range(1,11))
print(list(evens))
[2, 4, 6, 8, 10]
map()
sintax:
map(function, sequence)
Menghasilkan nilai output fungsi dari suatu sequence.
Contoh:
In [39]:
def kwadrat(x):
return x*x
sqr=map(kwadrat, range(1, 21))
print(list(sqr))
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]
Documentation String
Untuk membuat program yang baik perlu dokumentasi yang baik.
Salah satu bentuk dokumentasi adalah membuat penjelasan mengenai fungsi tersebut.
Dokumentasi dibuat dengan mengetik ''' setelah nama fungsi dan diakhiri dengan ''' juga.
Bisa dipanggil dengan siyntax: nama_fungsi.doc
Contoh:
In [36]:
def kwadrat(x):
''' f = kwadrat(x)
Ini adalah gungsi untuk menghitung kwadrat dari input argument (x)
f(x) = x*x '''
return x*x
In [37]:
print(kwadrat.__doc__)
f = kwadrat(x)
Ini adalah gungsi untuk menghitung kwadrat dari input argument (x)
f(x) = x*x
In [38]:
help(kwadrat)
Help on function kwadrat in module __main__:
kwadrat(x)
f = kwadrat(x)
Ini adalah gungsi untuk menghitung kwadrat dari input argument (x)
f(x) = x*x
In [40]:
kwadrat ?
In [42]:
sum?
Recursion
Rekursi adalah fungsi yang memanggil dirinya sendiri. Untuk menerapkan rekursi, perlu dibuat kondisi exit agar
program tidak terus berjalan tanpa henti.
Contoh:
In [43]:
def fact(x):
if x == 1: return 1
else: return x * fact(x-1)
print ('Factorial dari 15 adalah', fact(15))
Factorial dari 15 adalah 1307674368000
In [44]:
a = 0.5
for i in range(65):
a = a*2
print(a)
print(a/2500/1000)
1.8446744073709552e+19
7378697629483.821
Latihan
Buat fungsi untuk menghitung nilai kumulatif penjumlahan 1 sampai n, dimana n diinputkan user
In [45]:
def cum(x):
if x == 1: return 1
else: return x + cum(x-1)
x = int(input('Masukkan sebuah bilangan: '))
print('Kumulatif dari ', x, 'adalah',cum(x))
Masukkan sebuah bilangan: 4
Kumulatif dari 4 adalah 10
In [49]:
In [55]:
print(cum(5))
15
cum(15)
Fungsi dengan variable input argument
Python memiliki fasilitas untuk membuat fungsi dengan jumlah argument sesuai inputan user. Misal kita
membuat fungsi Add(input arguments) dimana jumlah input argument tidak dibatasi. Misalnya user dapat
memanggil fungsi tersebut dengan dua input argument Add(3,4) maka akan menghasilkan return 7. Bila user
memanggil Add(3,4,2) maka akan menghasilkan return 9, dan seterusnya.
Sintax:
def function_name (*args):
statements
In [47]:
def sum(a,b):
return a+b
print(sum(3,4,5))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [47] , in <cell line: 4>()
1 def sum(a,b):
2 return a+b
----> 4 print(sum(3,4,5))
TypeError: sum() takes 2 positional arguments but 3 were given
Contoh:
In [49]:
def Add(*args):
sum = 0
for i in args:
sum += i
return sum
Add(3,2,5,4,4,4,4,4,4,3)
Out[49]:
37
In [59]:
def gabung(*args):
sum = ''
for i in args:
sum = sum + i + ' '
return sum
print(gabung('saya','makan','tahu','goreng'))
saya makan tahu goreng
Latihan: Buat fungsi untuk menggabungkan string dengan jumlah input argument tidak dibatasi
In [ ]:
def gabung(*args):
sum = ''
for i in args:
sum = sum + i + ' '
return sum
a = 'saya'
b = 'makan'
c = 'tahu'
d = gabung(a,b,c)
print(d)
In [ ]:
a = ['saya','makan','nasi']
' '.join(a)
Fungsi dengan variable keywords input argument
Python juga memiliki fasilitas untuk membuat fungsi dengan jumlah keyword argument sesuai inputan user.
Sintax:
def function_name (**kwargs):
statements
Contoh:
In [ ]:
def myFun(**kwargs):
for i in kwargs:
print(i,": ", kwargs[i])
# key, value in [Link]():
# print("%s : %s" % (key, value))
# Driver code
myFun(first='Siji', mid='Loro', last='Telu')
Latihan:
Buat fungsi untuk mengalikan semua input yang dimasukkan user
In [51]:
def perkalian(*args):
sum = 1
for i in args:
sum = sum * i
return sum
perkalian(3,2,5,4,4,4,4,4,4,3)
Out[51]:
368640
In [ ]: