def foo1():
    a = bytes(range(30, 40))
    print(type(2.0 + 3))




def my_decorator(func):
    def wrapper(*args, ** kwargs):
        print('Running function:', func.__name__)
        print('Positional arguments:', args)
        print('Keyword arguments:', kwargs)
        result = func(*args, **kwargs)
        print('Result:', result)
        return result
    return wrapper

@my_decorator
def add_ints(a, b):
    return a + b


# @my_decorator
def foo2():
    print('My function')

# foo3 = my_decorator(foo2)
# add_ints(1, 2)

def foo3():
    a = [1, 2, 3] 
    try:
        print(a[4])
    except Exception as e:
        print("Error:", e)

foo3()
