Лучшая аналогия, о которой я могу думать, это хирург и его помощник (ов) в операционном зале, где хирург - главный человек и его помощник, который предоставляет различные хирургические компоненты, когда он в этом нуждается, чтобы хирург мог сконцентрироваться по одной вещи он делает лучше всего (операция). Без помощника хирург должен получать компоненты самостоятельно каждый раз, когда ему это нужно.
DI для краткости - это метод устранения общей дополнительной ответственности за компоненты для извлечения зависимых компонентов путем предоставления
DI приближает вас к принципу единой ответственности (SR), как surgeon who can concentrate on surgery
.
Когда использовать DI: я бы рекомендовал использовать DI почти во всех производственные проекты (небольшие / большие), особенно в постоянно меняющихся бизнес-средах:)
Почему: потому что вы хотите, чтобы ваш код был легко проверяемым, макетируемым и т. д., чтобы вы могли быстро протестировать свои изменения и нажать на него рынок. Кроме того, почему бы вам не сделать, когда у вас есть много потрясающих бесплатных инструментов / фреймворков, которые помогут вам в вашем пути к кодовой базе, где у вас больше контроля.
А1: потому что вы строите линию, и я подозреваю, что х не отсортирован.
А2. См. Вопрос 1.
A3: используйте следующее и посмотрите, как это работает (поскольку вы используете numpy):
x = np.array(x)
y = np.array(y)
plt.plot(x[x.argsort()], y[x.argsort()], label='Hello,World')
РЕДАКТИРОВАТЬ: если у вас много шума, вы можете попробуйте построить меньше точек, например:
plt.plot(x[x.argsort()][::3], y[x.argsort()][::3], label='Hello,World') #each 3 points
или построить скользящее среднее (см. здесь )