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.

APLX is a very complete implementation of the APL programming language from MicroAPL. The company stopped producing it in 2016 and it has been taken over by Dyalog. While Dyalog ...