Dekorator

Menulis Function di Python

Shayne Miel

Software Architect @ Duo Security

Fungsi

fungsi

Menulis Function di Python

Dekorator

fungsi dengan dekorator

Menulis Function di Python

Modifikasi input

modifikasi input

Menulis Function di Python

Modifikasi output

modifikasi output

Menulis Function di Python

Modifikasi fungsi

modifikasi fungsi

Menulis Function di Python

Seperti apa dekorator?

@double_args
def multiply(a, b):
  return a * b

multiply(1, 5)
20
Menulis Function di Python

Dekorator double_args

def multiply(a, b):
  return a * b

def double_args(func): return func
new_multiply = double_args(multiply)
new_multiply(1, 5)
5
multiply(1, 5)
5
Menulis Function di Python

Dekorator double_args

def multiply(a, b):
  return a * b

def double_args(func):
# Define a new function that we can modify def wrapper(a, b):
# For now, just call the unmodified function return func(a, b)
# Return the new function return wrapper
new_multiply = double_args(multiply)
new_multiply(1, 5)
5
Menulis Function di Python

Dekorator double_args

def multiply(a, b):
  return a * b

def double_args(func): def wrapper(a, b):
# Call the passed in function, but double each argument return func(a * 2, b * 2)
return wrapper
new_multiply = double_args(multiply)
new_multiply(1, 5)
20
Menulis Function di Python

Dekorator double_args

def multiply(a, b):
  return a * b

def double_args(func): def wrapper(a, b): return func(a * 2, b * 2) return wrapper
multiply = double_args(multiply)
multiply(1, 5)
20
multiply.__closure__[0].cell_contents
<function multiply at 0x7f0060c9e620>
Menulis Function di Python

Sintaks dekorator

def double_args(func):
  def wrapper(a, b):
    return func(a * 2, b * 2)
  return wrapper

def multiply(a, b): return a * b multiply = double_args(multiply) multiply(1, 5)
20
def double_args(func):
  def wrapper(a, b):
    return func(a * 2, b * 2)
  return wrapper

@double_args def multiply(a, b): return a * b multiply(1, 5)
20
Menulis Function di Python

Ayo berlatih!

Menulis Function di Python

Preparing Video For Download...