Faits: Faits: A. Par jugement du 8 octobre 2003, le Tribunal correctionnel de l'arrondissement de La Côte a condamné X._, pour mise en danger de la vie d'autrui, lésions corporelles avec un instrument dangereux, menaces, infraction à la loi sur les armes et contravention à l'arrêté sur les tirs, à quinze mois d'emprisonnement et a suspendu l'exécution de cette peine au profit d'un traitement psychiatrique ambulatoire. S'agissant de la mise en danger de la vie d'autrui, qui est seule contestée, ce jugement retient ce qui suit: Au printemps ou début de l'été 2001, X._, né en 1973, a eu une altercation avec le dénommé Y._. Le 6 juillet 2001, accompagné de trois autres personnes, Y._ a entrepris une expédition punitive à l'endroit de X._. Il s'est muni pour l'occasion d'un objet qualifié par lui de "bâton" et par les témoins de "matraque". Après avoir attendu X._ à la sortie d'un établissement public, Y._ s'est dirigé vers lui muni de son "bâton". Deux de ses compagnons marchaient légèrement en retrait. Sentant l'atmosphère tendue, X._, qui avait reconnu Y._, s'est précipité vers sa voiture, en a retiré une baïonnette qu'il a dissimulée derrière son dos, et a fait face à ses agresseurs. Remarquant que X._ cachait quelque chose dans son dos, Y._ lui a asséné un coup à la nuque. X._ a partiellement esquivé ce coup et a frappé simultanément Y._ au thorax avec sa baïonnette. Celui-ci a été blessé au poumon. Il a subi une intervention chirurgicale suivie d'une hospitalisation de quelques jours. Il ne souffre d'aucune séquelle. Au printemps ou début de l'été 2001, X._, né en 1973, a eu une altercation avec le dénommé Y._. Le 6 juillet 2001, accompagné de trois autres personnes, Y._ a entrepris une expédition punitive à l'endroit de X._. Il s'est muni pour l'occasion d'un objet qualifié par lui de "bâton" et par les témoins de "matraque". Après avoir attendu X._ à la sortie d'un établissement public, Y._ s'est dirigé vers lui muni de son "bâton". Deux de ses compagnons marchaient légèrement en retrait. Sentant l'atmosphère tendue, X._, qui avait reconnu Y._, s'est précipité vers sa voiture, en a retiré une baïonnette qu'il a dissimulée derrière son dos, et a fait face à ses agresseurs. Remarquant que X._ cachait quelque chose dans son dos, Y._ lui a asséné un coup à la nuque. X._ a partiellement esquivé ce coup et a frappé simultanément Y._ au thorax avec sa baïonnette. Celui-ci a été blessé au poumon. Il a subi une intervention chirurgicale suivie d'une hospitalisation de quelques jours. Il ne souffre d'aucune séquelle. B. Par arrêt du 23 février 2004, la Cour de cassation pénale du Tribunal cantonal vaudois a partiellement admis le recours de X._. Contrairement au Tribunal correctionnel, elle a admis que X._ se trouvait en état de légitime défense lorsqu'il a porté son coup de baïonnette. Elle a toutefois qualifié cette légitime défense d'excessive (art. 33 al. 2 CP). Statuant à nouveau, elle a condamné X._, pour les mêmes infractions que celles retenues en première instance, à six mois d'emprisonnement. Elle a confirmé au surplus le jugement du Tribunal correctionnel. B. Par arrêt du 23 février 2004, la Cour de cassation pénale du Tribunal cantonal vaudois a partiellement admis le recours de X._. Contrairement au Tribunal correctionnel, elle a admis que X._ se trouvait en état de légitime défense lorsqu'il a porté son coup de baïonnette. Elle a toutefois qualifié cette légitime défense d'excessive (art. 33 al. 2 CP). Statuant à nouveau, elle a condamné X._, pour les mêmes infractions que celles retenues en première instance, à six mois d'emprisonnement. Elle a confirmé au surplus le jugement du Tribunal correctionnel. C. X._ se pourvoit en nullité au Tribunal fédéral contre l'arrêt du 23 février 2004. Il conclut à son annulation et sollicite par ailleurs l'assistance judiciaire. Le Ministère public vaudois conclut au rejet du pourvoi.