What is more efficient?

1) import math
2) from math import *
3) from math import sin, cos

Recommended Answers

All 5 Replies

Member Avatar for sravan953

I don't know what you mean by efficient, but I think import math will suffice.

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.

What vegaseat said.

And if you're trying to optimise your program by using the most "efficient" of these, you have issues.

Member Avatar for sravan953

Whoa! I never knew there were so many complication in even importing modules! Kudos vegaseat!

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

I was about to say that this method might be efficient. Ooh! It have bad pitfalls I will stick with import and import as

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.