This document discusses features of functional programming in Python. It covers lambda functions, map, filter, functions as first class objects, high order functions, functions as return values, closures, and decorators. Examples are provided for each concept to demonstrate how to implement them in Python code. The goal of the course is for students to understand and apply functional programming features in Python.
2. Capaian Mata Kuliah
• (M1) Mahasiswa Mampu Memahami Fitur dalam Pemrograman
Fungsional
• (M2) Mahasiswa mampu Menerapkan Fitur dalam Pemrograman
Fungsional
3. Python
• Mendukung functional programming walupun bukanlah yang utama
• Dalam python semua adalah object sehingga fungi dapat diassign
dalam variable
def coba(a, b):
return a + b
tambah = coba
tambah(1, 2) >> return 3
11. Filter
def coba(n):
return n % 2
x = [1, 2, 3, 4, 5]
hasil = filter(coba, x)
print(list(hasil))
filter(lambda x : x % 2, x)
print(list(filter(lambda x : x % 2, x)))
12. First Class Object
Def add(a, b):
return a + b
Add2 = add
Add2(1,2) // 3
Def giveMeadd():
deff add(a, b):
return a + b
return add
13. First Class Object
• Def coba (a):
• Return a
• Print(coba(1))
• Lagi = coba
• Print(lagi(2))
15. Function as Argument
def summation(nums): # normal function
return sum(nums)
def main(f, *args): # function as an argument
result = f(*args)
print(result)
if __name__ == "__main__":
main(summation, [1,2,3]) # output 6
16. High Order Function
• deff food():
• return “food got eaten”
• drink : lambda : “drink got drunk”
• def me (*arg):
• def eat ():
• return map(lambda x : x(), args)
• Return eat
• act = me (food, drink)
• print(act)
17. function as a return value
def add_tw0_nums(x, y): # normal function which returns data
return x + y
def add_three_nums(x, y, z): # normal function which returns data
return x + y + z
def get_appropriate_function(num_len): # function which returns functions
depending on the logic
if num_len == 3:
return add_three_nums
else:
return add_tw0_nums
18. function as a return value
if __name__ == "__main__":
args = [1, 2, 3]
num_len = len(args)
res_function = get_appropriate_function(num_len)
print(res_function) # <function add_three_nums at 0x7f8f34173668>
print(res_function(*args)) # unpack the args, output 6
args = [1, 2]
num_len = len(args)
res_function = get_appropriate_function(num_len)
print(res_function) # <function add_tw0_nums at 0x7f1630955e18>
print(res_function(*args)) # unpack the args, output 3
19. closure
def coba():
... a = 1
... def tambah(x):
... return x + a
... return tambah
>>> closure1 = coba()
>>> print(closure1(2))
3
>>> print(closure1(5))
6
24. Tugas
• Buat program yang mengimplementasikan
• Lambda
• Filter
• Map
• Fist Class Object
• High order function
• Function as return value
• Closure
• decorator