Każdy język programowania ma pewne obostrzenia, co do nazewnictwa różnego typu struktur, czy to zmiennych, czy to funkcji, a może klas, czy innych obiektów. Wynika to między innymi z tego, że kompilatory czy interpretery muszą być w stanie rozróżnić co jest czym, czy coś jest właśnie jakimś nazwanym przez Nas obiektem, czy po prostu słowem kluczowym języka programowania (czyli częścią składni).
W Pythonie, jak w dużej częście języków programowania, po pierwsze rozróżniamy wielkie i małe litery, to znaczy, że zmienna o nazwie Piotr i piotr to dwie różne zmienne, dwa różne obiekty (w Pythonie wszystko jest obiektem).
Kolejny warunek jest prosty, w Pythonie do nazywania rzeczy, czyli tworzenia tzw. identyfikatorów możemy używać znaków alfanumerycznych, czyli też cyfr. Z tym, że owe cyfry, nie mogą znajdować się na początku danego identyfikatora. Innymi słowy, nie możemy stworzyć zmiennej o nazwie 1a, ale już nazwać a1 zmienną jak najbardziej możemy.

Nie tylko Python na to nie pozwala, ma tak większość języków.
No dobrze, ale co ze zmiennymi, którym chcemy nadać nazwy dwuczłonowe? No właśnie, w Pythonie mamy takie coś jak string, czyli tekst, który możemy objąć w cudzysłowie: „to jest jakiś tekst”, natomiast string taki nie może być nazwą zmiennej w Pythonie. Zmienna w Pythonie, ma nazwę wpisaną z palca, tak po prostu, jak Nasze wspomniane a1. I moglibyśmy napisać mojazmienna, ale jest to mało czytelne. Czy mogę napisać moja zmienna? Oczywiście także nie, bo byłyby to dla interpretera Pythona dwie osobne zmienne o nazwach moja i zmienna.
Możemy oczywiście użyć tutaj taktyki, która była niegdyś stosowana na blogach, czyli mojaZmienna. Jest to jak najbardziej prawidłowa zmienna, i możemy rozróżnić poszczególne słowa. I tak, jest to jeden z dwu sposobów zapisu, zwany Camel case.
No, ale prócz Camel case, istnieje też inny zapis, jeszcze bardziej moim zdaniem, uwidaczniający odrębność członów. Jest to: Snake case, czyli po prostu zastąpienie każdej spacji znakiem underscore, a mówiąc po polskiemu – znakiem podkreślnika: moja_zmienna.
Mamy jeszcze jedną, w zasadzie podstawową rzecz. Prócz wspomnianych wyżej nakazów, zakazów i dobrych praktyk, mamy coś jeszcze. Nie możemy w identyfikatorach używać słów zarezerwowanych dla samego Pythona, tzw. słów kluczowych, takij jak (między innymi): and, in, for i kilku innych. I tutaj jest przydatne kolorowanie składny w naszym edytorze. Zwykle gdy jakieś słówko jest wizualnie wyróżnione przez edytor – jest ono słowem kluczowym. Pełna lista takich słów jest w dokumentacji.
Wszystkie powyższe informacje są stosowane do każdego rodzaju własnego identyfikatora w Pythonie, czyli nazw zmiennych, klas, funkcji i innych obiektów. Ja osobiście w Pythonie najczęściej zmienne nazywam z małych liter, w zgodzie z Samel case. Przyjeło się, że właśnie z wężowy styl jest najbardziej popularny w Pythonie (w końcu wąż w logo coś znaczy 😉 ). Nazwy klas zwykle piszemy z dużej litery, a funkcje mogą pozostać małą.