What does "splitter" attribute in sklearn's DecisionTreeClassifier do?
The "Random" setting selects a feature at random, then splits it at random and calculates the gini. It repeats this a number of times, comparing all the splits and then takes the best one. 
This has a few advantages: 

It's less computation intensive than calculating the optimal split of every feature at every leaf. 
It should be less prone to overfitting. 
The additional randomness is useful if your decision tree is a component of an ensemble method.
The sklearn DecisionTreeClassifier has a attribute called "splitter" , it is set to "best" by default, what does setting it to "best" or "random" do? I couldn't find enough information from the official documentation.