In French, why are some nouns fem. at times, and masc. at others?

Like, "Je suis une enfant du monde" in Indila's song. Enfant is masculine, so shouldn't it be un? Or ami/e. I thought that a noun is always either masc. or fem. Why does it change sometimes?
Answers

Tangi

Masculine and feminine are grammatical categories of words. The gender is a fixed property of the noun itself, and mostly doesn't correspond to anything in what the noun describes But in some cases, when the noun is about a person (or sometimes an animal), the grammatical gender of the noun can match the sexual gender of what the noun describes. The grammatical gender of the noun itself is still fix, it doesn't change, but there are two nouns, a masculine one and a feminine one, with the same meaning. To help you understand, think about the word "homme" (man) and "femme" (woman). They are two different nouns, but mean the same thing, except for two different sexes. Same thing for "lion" (lion or male lion) and "lionne" (lioness). In general, the feminine form looks like the masculine form but with an extra E in the end (and some consonants before that can be doubled). But some nouns have an identical masculine and feminine form. A word with an identical masculine and feminine form is an "épicène" word. Most of the time, in an épicène pair, the masculine one is used when the sex of the person (or animal) isn't mentioned or not important. Not always. "Enfant" is an épicène noun. So in your sentence, it's "une enfant" because it refers directly to Indila, who is a woman, so she uses the feminine form. She could have said "un enfant", though, because the masculine form is also the one you use when not indicating any sex.

L. E. Gant: You are right

You are right: nouns in French are either masculine or feminine. Many languages do the same thing (although the M or F may be different in those other languages) Enfant can be either masculine or feminine. There are a number of words that give the same problem. In most of these cases, the context tells you which gender to use.

MARK

You are mistaken. There are a number of nouns in French which can be of either gender and 'enfant' is one of them. It is perfectly correct to write either, 'un enfant' or 'une enfant'. In each case the form of the indefinite article tells you the sex of the child.