Python - Decorator
Page content
how to use Python Decorator
Sample Code
main.py
cat << 'EOF' > main.py
#!/usr/bin/env python3
# Sample from https://blog.stoege.net/posts/python_decorator/
# Vars
a = 3
b = 8
# Decorator which logs start and end of a function
def log_function_call(func):
def wrapper(*args, **kwargs):
print(f"\nCalling function '{func.__name__}' with {args=} & {kwargs=}")
result = func(*args, **kwargs)
print(f"Function '{func.__name__}' finnished\n")
return result
return wrapper
@log_function_call
def add(a=int, b=int) -> int:
result = a + b
return result
@log_function_call
def sub(a=int, b=int) -> int:
result = a - b
return result
@log_function_call
def prod(a=int, b=int) -> int:
result = a * b
return result
@log_function_call
def div(a=int, b=int) -> int:
result = a / b
return result
if __name__ == "__main__":
print("Result:", add(a, b))
print("Result:", sub(a, b))
print("Result:", prod(a, b))
print("Result:", div(a, b))
EOF
chmod u+x main.py
##### RUN #####
# ./main.py
###############
Running Code
user@host% ./main.py
Calling function 'add' with args=(3, 8) & kwargs={}
Function 'add' finnished
Result: 11
Calling function 'sub' with args=(3, 8) & kwargs={}
Function 'sub' finnished
Result: -5
Calling function 'prod' with args=(3, 8) & kwargs={}
Function 'prod' finnished
Result: 24
Calling function 'div' with args=(3, 8) & kwargs={}
Function 'div' finnished
Result: 0.375
Any Comments ?
sha256: ab6641b101cea8ac7eb6517fcefb029380644a56203723973fa1bc957fafbafb