Use 'import module' or 'from module import'?
python, python-import
Solution
The difference between `import module` and `from module import foo` is mainly subjective. Pick the one you like best and be consistent in your use of it. Here are some points to help you decide.
`import module`
- Pros:
- Less maintenance of your `import` statements. Don't need to add any additional imports to start using another item from the module
- Cons:
- Typing `module.foo` in your code can be tedious and redundant (tedium can be minimized by using `import module as mo` then typing `mo.foo`)
`from module import foo`
- Pros:
- Less typing to use `foo`
- More control over which items of a module can be accessed
- Cons:
- To use a new item from the module you have to update your `import` statement
- You lose context about `foo`. For example, it's less clear what `ceil()` does compared to `math.ceil()`
Either method is acceptable, but don't use `from module import *`.
For any reasonable large set of code, if you `import *` you will likely be cementing it into the module, unable to be removed. This is because it is difficult to determine what items used in the code are coming from 'module', making it easy to get to the point where you think you don't use the `import` any more but it's extremely difficult to be sure.
Problem
I've tried to find a comprehensive guide on whether it is best to use `import module` or `from module import`. I've just started with Python and I'm trying to start off with best practices in mind. Basically, I was hoping if anyone could share their experiences, what preferences other developers have and what's the best way to avoid any gotchas down the road?