I prefer to know where functions came from, so I would use the namespace alternative ...

import math
y = math.sin(1) + math.cos(1)

If you use ...

from math import sin, cos
y = sin(1) + cos(1)

... in the hope that only sin and cos are imported, you are wrong. The whole math module is imported, the only efficiency is that you don't have to type the name space ("math."), but you lose the safety of the name space, as there will be conflicts with equally named functions or variables.

If your module name gets longer, you can use this import statement ...

import numpy as np
y = np.sin(1) + np.cos(1)

This would be the worst case ...

from math import *
from numpy import *
y = sin(1) + cos(1)

From which module will Python pick sin() and cos()? Let's say one module is more accurate than the other.

I want to implement undo logic which deletes the last drawn shape. To test this logic i had cleared shapes list and redrawn all shapes but still last ...