fit() vs fit_predict() metthods in sklearn KMeans
In scikit-learn, there are similar things such as fit and fit_transform. 
Fit and predict or labels_ are essential for clustering. 
Thus fit_predict is just efficient code, and its result is the same as the result from fit and predict (or labels).
In addition, the fitted clustering model is used only once when determining cluster labels of samples.
There are two methods when we make a model on sklearn.cluster.KMeans. First is fit() and other is fit_predict(). My understanding is that when we use fit() method on KMeans model, it gives an attribute labels_ which basically holds the info on which observation belong to which cluster. fit_predict() also have labels_ attribute.
So my question are,

If fit() fulfills the need then why their is fit_predict()?
Are fit() and fit_predict() interchangeable while writing code?