Time
<aside>
RC: Senin jam 08.00-10.00
RB: Selasa jam 15.00-16.40
RA: kamis jam 15.00-16.40
</aside>
Form pengumpulan Tugas terkait decorator
Soal
Buatlah sebuah decorator bernama log_decorator yang:
def simple_decorator(func):
def wrapper():
print("Memulai fungsi...")
func()
print("Fungsi selesai.")
return wrapper
@simple_decorator
def say_hello():
print("Hello, Budi")
# Panggil fungsi
say_hello()
# Output
Memulai fungsi...
Hello, Budi
Fungsi selesai.
Buat decorator double_result yang:
def double_result(func):
def wrapper():
rst = func() * 2
return rst
return wrapper
@double_result
def get_number():
return 5
get_number()
# output
# 10
Buat decorator log_args yang mencetak semua argumen yang dikirim ke fungsi.
def log_args(func):
def wrapper(*argumen):
print("Fungsi dipanggil dengan argumen:", argumen)
return wrapper
@log_args
def multiply(a, b):
return a * b
multiply(3, 4)
# Output
# Fungsi dipanggil dengan argumen: (3, 4)
Buatlah decorator bernama repeat(n) yang menjalankan fungsi sebanyak n kali.
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
# Contoh penggunaan
@repeat(3)
def say_hi():
print("Hi!")
say_hi() # Akan mencetak "Hi!" sebanyak 3 kali
Tugas