Dekoratoriai atsakymai - robotautas/kursas GitHub Wiki
Dekoratorių užduočių atsakymai:
1
def args_limited(func):
def wrapper(*args, **kwargs):
if (len(args) + len(kwargs)) > 2:
return "Too many arguments"
return func(*args, **kwargs)
return wrapper
2
def strings_only(func):
def wrapper(*args, **kwargs):
for arg in args:
if not type(arg) is str:
return "All args must be of type string!"
for kwarg in kwargs.values():
if not type(kwarg) is str:
return "All kwargs must be of type string!"
return func(*args, **kwargs)
return wrapper
3 (visa programa):
import requests
from functools import wraps
from time import time
def speed_test(func):
@wraps(func)
def wrapper(*args, **kwargs):
start_time = time()
result = func(*args, **kwargs)
end_time = time()
runtime = end_time - start_time
print(f"Function's '{func.__name__}', with given parameters {args}, {kwargs} runtime: {round(runtime, 2)}s")
return result
return wrapper
@speed_test
def get_status(website):
r = requests.get(website)
return r.status_code
@speed_test
def prime_finder(given_range):
final_list = []
for num in range(2, given_range):
for i in range(2, num):
if num % i == 0:
break
else:
final_list.append(num)
return final_list
# print(get_status('http://python.org'))
# print(prime_finder(100000))