The choice between from ... import ...
and import ... as ...
in Python depends on your use case, readability, and potential conflicts in your code. Here’s a breakdown of when to use each:
1. from ... import ...
This is used to import specific attributes, functions, or classes from a module. It’s especially useful when:
- You only need specific parts of a module and want to avoid prefixing with the module name.
- You want to improve readability by reducing repeated module name prefixes.
- You need multiple items from the module but don’t need the entire module.
Example:
from math import sqrt, pi
# Usage:
result = sqrt(16)
print(pi)
Considerations:
- Avoid using
from ... import *
as it can lead to namespace pollution and make it unclear where specific names are coming from. - Ensure the imported names are unique in your script to prevent name conflicts.
2. import ... as ...
This is used to import a module (or parts of it) and give it an alias. It’s helpful when:
- You want to shorten the module name for convenience, especially for modules with long names.
- There might be naming conflicts with another module or variable in your script.
- You want to emphasize a specific context in which the module is used.
Example:
import numpy as npimport pandas as pd
# Usage:
array = np.array([1, 2, 3])
dataframe = pd.DataFrame({“col1”: [1, 2], “col2”: [3, 4]})
Considerations:
- Use aliases that are standard or widely understood in your community (e.g.,
np
for NumPy). - Don’t alias unnecessarily if the module name is short and clear.
Which to Choose?
- Prefer
from ... import ...
when:- You only need a few functions, classes, or constants from a module.
- You want to avoid the overhead of typing the module name repeatedly.
- The imported names won’t conflict with others in your script.
- Prefer
import ... as ...
when:- You use the module extensively in your code.
- You want to make the code concise or follow community conventions.
- There’s potential for naming conflicts.
Practical Example:
# Use `from … import …` for clarity and readability
from math import sqrt, pi
# Use `import … as …` for long module names or common abbreviations
import matplotlib.pyplot as plt