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

  1. 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.
    
  2. 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
    
  3. 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)
    
  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
    
    

New form

Tugas