Skrypt wypisuje wynik obliczeń, ale zamiast czytelnego komunikatu pokazuje kilka wartości obok siebie albo puste miejsce. Funkcja print() wyświetla dane w strumieniu wyjściowym i domyślnie kończy wiersz znakiem nowej linii, choć szczegóły zmieniają argumenty wywołania. To drobiazgi, które szybko decydują o tym, czy komunikat pomaga znaleźć błąd, czy tylko zaśmieca konsolę.

Najważniejsze informacje o print() w Pythonie
- Podstawowe wywołanie:
print("Gotowe")wypisuje tekst i domyślnie przechodzi do nowej linii. - Wiele argumentów: Python rozdziela je spacją, chyba że ustawisz
sep. - Wynik funkcji:
print()wyświetla treść, a jej wartością zwrotną jestNone. - Formatowanie: f-string pozwala wstawić wartość zmiennej bez ręcznego łączenia tekstu.
- Diagnozowanie błędu: sprawdź, czy problem dotyczy zawartości, separatora, końca wiersza czy miejsca zapisu.
print() pokazuje dane, ale nie oddaje ich do dalszych obliczeń
Wyobraź sobie, że funkcja oblicza cenę zamówienia. Możesz pokazać wynik w konsoli, ale samo wyświetlenie nie zapisuje go w zmiennej ani nie przekazuje do kolejnego fragmentu programu. Do tego służy zwracanie wartości, a nie drukowanie jej na ekranie.
def oblicz_cene(cena, liczba_sztuk):
return cena * liczba_sztuk
suma = oblicz_cene(19.99, 3)
print(f"Do zapłaty: {suma:.2f} zł")Funkcja oblicz_cene() zwraca liczbę, którą można przypisać, porównać albo wykorzystać ponownie. print() zamienia przekazane obiekty na tekst i zapisuje je w strumieniu wyjściowym; samo wywołanie zwraca None. Potwierdza to dokumentacja wbudowanych funkcji Pythona, która opisuje konwersję argumentów i zapis do strumienia. Jeśli później potrzebujesz wyniku w kodzie, użyj return; jeśli chcesz go zobaczyć, użyj print(). Uważam, że to rozróżnienie oszczędza początkującym najwięcej nieporozumień.
sep i end zmieniają odstępy między wartościami i koniec wiersza
Wywołanie print("Status", "OK") wypisze Status OK, bo domyślnym separatorem argumentów jest pojedyncza spacja. Gdy przygotowujesz log lub prosty raport, możesz zmienić separator i zakończenie wiersza osobno.
print("2026", "11", "12", sep="-")
print("Ładowanie", end="...")
print("gotowe")Efekt to dwa wiersze: 2026-11-12 oraz Ładowanie...gotowe. Parametr sep działa między argumentami, a end dopisuje tekst po ostatnim z nich. Dokumentacja wbudowanej funkcji print wskazuje też, że oba parametry muszą być tekstem lub wartością None. Jeśli wynik zlewa się w jeden ciąg, obejrzyj end; jeśli brakuje odstępów wewnątrz komunikatu, sprawdź sep.
F-string ułatwia czytelny komunikat bez ręcznego sklejania tekstu
Gdy w komunikacie mają pojawić się wartości zmiennych, f-string zwykle daje prostszy zapis niż łączenie fragmentów tekstu operatorem +. Wystarczy poprzedzić tekst literą f i umieścić wyrażenie w nawiasach klamrowych.
uzytkownik = "Ala"
zadania = 4
print(f"{uzytkownik} ma {zadania} zadania do wykonania.")Wynik: Ala ma 4 zadania do wykonania. Wartość można też sformatować, na przykład ograniczyć liczbę miejsc po przecinku: print(f"{19.987:.2f}") wyświetli 19.99. F-stringi opisuje samouczek Pythona w rozdziale o wejściu i wyjściu. Przy cenach, procentach i pomiarach formatowanie jest częścią komunikatu, a nie kosmetycznym dodatkiem.
Gdy wynik wygląda źle, diagnozuj go po objawie
Ten sam pozorny problem, „print nie działa”, może mieć kilka przyczyn: wartość jest pusta, tekst trafił do innego strumienia albo program nie dotarł do wywołania funkcji. Zamiast zmieniać kod na chybił trafił, dopasuj objaw do pierwszego testu.
| Objaw | Prawdopodobna przyczyna | Co zrobić |
|---|---|---|
W konsoli pojawia się None |
Wypisywana jest wartość zwrotna funkcji, która niczego jawnie nie zwraca. | Sprawdź, czy funkcja ma zwracać dane przez return, czy tylko je wyświetlać. |
| Argumenty zlewają się bez odstępów | Wartość sep została ustawiona na pusty tekst. |
Usuń argument sep albo ustaw go na wybrany separator, na przykład " ". |
| Tekst nie pojawia się od razu w procesie lub potoku | Wyjście może być buforowane. | Ustaw flush=True, jeśli program ma natychmiast opróżnić bufor. |
| Komunikat błędu miesza się ze zwykłym wynikiem | Oba rodzaje komunikatów trafiają na standardowe wyjście. | Użyj file=sys.stderr dla diagnostyki. |
W przypadku komunikatu diagnostycznego możesz napisać print("Nieprawidłowy plik", file=sys.stderr) po wcześniejszym import sys. Standardowe wyjście i standardowy strumień błędów są rozdzielone, więc narzędzia uruchamiające program mogą inaczej obsłużyć wynik oraz diagnostykę. Jeśli tekst ma być częścią raportu, wybierz plik lub standardowe wyjście; jeśli ma opisywać błąd, kieruj go do stderr.
Wybierz print do komunikatu, a return do wyniku funkcji
Najłatwiej podjąć decyzję, pytając, co ma zrobić następna linia kodu. Jeśli ma tylko pokazać użytkownikowi status, użyj print(); jeśli ma dalej przetworzyć obliczoną wartość, zwróć ją z funkcji. Gdybym projektował prostą funkcję obliczeniową, zwracałbym z niej wynik, a wyświetlanie zostawił miejscu, które odpowiada za interakcję z użytkownikiem.
- Komunikat dla człowieka:
print("Import zakończony"). - Wynik do dalszych obliczeń:
return liczba * stawka. - Log postępu w jednej linii: zmień
end, a w razie potrzeby wymuś zapis przezflush=True.
Jeśli budujesz aplikację większą niż krótki skrypt, stałe komunikaty diagnostyczne lepiej obsłużyć modułem logging, który pozwala rozróżniać poziomy i kierować zapisy do różnych miejsc. Do nauki i szybkiego podglądu wystarczy print(); w kodzie, który ma być utrzymywany i analizowany, wybór narzędzia powinien odpowiadać temu, kto będzie czytał komunikaty.
Jedno pytanie wystarczy, by dobrać właściwe wyjście
Gdy w konsoli widzisz nieoczekiwany tekst, ustal najpierw, czy chcesz go wyświetlić, zwrócić z funkcji czy zapisać do konkretnego strumienia. Potem sprawdź separator, zakończenie wiersza i format wartości. Tak rozdzielisz problem z samymi danymi od problemu z ich prezentacją.
