Po zainstalowaniu Pythona nadszedł czas, aby napisać swój pierwszy program. W tym rozdziale nauczysz się podstaw interakcji z Pythonem, wyświetlania danych na ekranie oraz dokumentowania kodu za pomocą komentarzy.
Komentarze – dokumentowanie kodu
Komentarze to fragmenty kodu, które są ignorowane przez interpreter Pythona. Służą do:
- Wyjaśniania skomplikowanych fragmentów kodu
- Opisywania, co robi dany fragment programu
- Tymczasowego wyłączania kodu bez jego usuwania
- Dodawania notatek dla siebie lub innych programistów
- Dokumentowania funkcji, klas i modułów
Kod jest pisany raz, ale czytany wielokrotnie. Dobre komentarze oszczędzają godziny pracy.
Komentarze jednoliniowe
Komentarze jednoliniowe zaczynają się od znaku # (hash). Wszystko po # do końca linii jest ignorowane.
# To jest komentarz
print("Hello, World!") # To też jest komentarz
Komentarze wieloliniowe
"""
To jest komentarz wieloliniowy
używający potrójnych cudzysłowów.
Technicznie to string, ale jeśli nie jest przypisany
do zmiennej, Python go ignoruje.
"""
print("Hello")
Potrójne cudzysłowy (docstring) to tak naprawdę stringi, nie komentarze. Jednak gdy nie są przypisane do zmiennej, Python je ignoruje, więc działają jak komentarze.
Pierwszy program – Hello, World!
Utwórz nowy plik o nazwie hello.py w swoim edytorze i wpisz:
print("Hello, World!")
Zapisz plik i uruchom go z terminala lub kliknij przycisk „Run python file” w VSCode:
python hello.py
Na ekranie pojawi się:
Hello, World!

Gratulacje! Właśnie napisałeś swój pierwszy program w Pythonie.
print – to funkcja wbudowana w Pythonie. Służy do wyświetlania danych na ekranie
("Hello, World!") – to argument przekazany do funkcji print. Nawiasy okrągłe oznaczają wywołanie funkcji. Tekst w cudzysłowie to string (łańcuch znaków). Można używać zarówno cudzysłowów podwójnych " jak i pojedynczych '
UWAGA: W Pythonie nie używamy średników na końcu linii
Warianty pierwszego programu
Python jest elastyczny. Oto kilka sposobów wyświetlenia tekstu:
print("Hello, World!") # Cudzysłowy podwójne
print('Hello, World!') # Cudzysłowy pojedyncze
print("Hello, 'World'!") # Kombinacja cudzysłowów
print('Hello, "World"!') # Odwrotna kombinacja
print("""Hello, World!""") # Potrójne cudzysłowy
print('''Hello, World!''') # Potrójne apostrofy
Wszystkie te warianty dają ten sam rezultat. Wybór zależy od kontekstu i osobistych preferencji.
Wyświetlanie tekstu:
print("Witaj w Pythonie!") #Witaj w Pythonie!
print("To jest druga linia") #To jest druga linia
print("A to trzecia") #A to trzecia
Wyświetlanie liczb:
print(42) #42
print(3.14) #3.14
print(100 + 50) #150
print(10 * 5) #50
Liczby nie wymagają cudzysłowów. Python automatycznie rozpoznaje, że to liczby, nie tekst.
Wyświetlanie wielu wartości:
print("Wynik:", 42) #Wynik: 42
print("Pi równa się", 3.14) #Pi równa się 3.14
print("Suma:", 10, "+", 20, "=", 30) #Suma: 10 + 20 = 30
Wartości oddzielone przecinkami są automatycznie rozdzielane spacją.
Parametry funkcji print()
Funkcja print() ma kilka przydatnych parametrów, które modyfikują jej zachowanie.
print() bez argumentów wyświetla pustą linię.
sep – separator między wartościami
Domyślnie print() oddziela wartości spacją. Możesz to zmienić:
print("Jan", "Kowalski") # Domyślnie: spacja
print("Jan", "Kowalski", sep="-") # Separator: myślnik
print("2024", "01", "15", sep="/") # Data ze slashami
print("Python", "to", "super", sep="***") # Własny separator
print("a", "b", "c", sep="") # Bez separatora
"""wynik
Jan Kowalski
Jan-Kowalski
2024/01/15
Python***to***super
abc"""
end – zakończenie linii
Domyślnie print() kończy się znakiem nowej linii (\n). Możesz to zmienić:
print("To jest pierwsza linia") #doda \n
print("To jest druga linia") #doda \n
print("Loading", end="...") #nie doda \n tylko ...
print("Done!") #Loading...Done!
PEP 8 i nowoczesne standardy stylu w Pythonie
PEP 8 to jeden z najważniejszych dokumentów w świecie Pythona. To oficjalny przewodnik stylistyczny, który definiuje, jak powinien wyglądać dobrze napisany kod Pythona. Zrozumienie i stosowanie PEP 8 odróżnia początkującego od profesjonalnego programisty Python.
PEP to skrót od Python Enhancement Proposal (Propozycja Ulepszeń Pythona). To dokumenty opisujące nowe funkcje, procesy lub standardy dla języka Python. https://www.python.org/dev/peps/
„Code is read much more often than it is written” – Kod jest czytany znacznie częściej niż pisany.
Gdy wszyscy programiści przestrzegają tych samych zasad:
- Kod jest bardziej czytelny i zrozumiały
- Łatwiej znaleźć błędy podczas code review
- Nowi programiści szybciej się adaptują do projektu
- Współpraca jest płynniejsza i mniej konfliktowa
- Automatyczne narzędzia mogą łatwiej analizować kod
Kluczowe zasady PEP 8
Główne zasady formatowania
1. Wcięcia (Indentation)
W Python nie ma nawiasów grupujących bloki kodu – są wcięcia. Jeżeli kod nie będzie odpowiednio ułożony, będą wyskakiwały błędy.
Używaj 4 spacji na poziom wcięcia. Ustaw w VSCode wielkość Tabulacji na 4 spacje: "editor.tabSize": 4, "editor.insertSpaces": true
# DOBRZE
def funkcja():
if True:
print("Cztery spacje wcięcia")
print("Konsekwentnie")
# ŹLE - mieszane wcięcia
def funkcja():
if True:
print("Chaos")
Długość linii:
Ograniczaj linie do maksymalnie 79 znaków (lub 72 w przypadku komentarzy i dokumentacji).
Puste linie:
Oddzielaj klasy i funkcje najwyższego poziomu dwiema pustymi liniami. Wewnątrz klas metody oddzielaj jedną pustą linią.
# DOBRZE
# Dwie puste linie między funkcjami na najwyższym poziomie
def pierwsza_funkcja():
return "Pierwsza"
def druga_funkcja():
return "Druga"
# Dwie puste linie między klasami
class MojaKlasa:
# Jedna pusta linia między metodami
def metoda1(self):
pass
def metoda2(self):
pass
# Jedna pusta linia dla oddzielenia logicznych sekcji
def przetwarzaj_dane(dane):
# Walidacja
if not dane:
return None
# Przetwarzanie
wynik = []
for element in dane:
wynik.append(element * 2)
# Zwracanie
return wynik
4. Importy
Importy na początku pliku, każdy w osobnej linii, pogrupowane według kategorii.
# DOBRZE - kolejność i grupowanie
# 1. Biblioteka standardowa Pythona
import os
import sys
from datetime import datetime
# 2. Biblioteki third-party (pip)
import numpy as np
import pandas as pd
from flask import Flask, render_template
# 3. Własne moduły
from my_module import my_function
from my_package.utils import helper
# ŹLE - wszystko pomieszane
from flask import Flask
import os
from my_module import my_function
import numpy as np
# DOBRZE - każdy import osobno
import os
import sys
import json
# ŹLE - wiele importów w jednej linii
import os, sys, json
# DOBRZE - z tego samego modułu można
from datetime import datetime, timedelta, date
# DOBRZE - jeśli importów jest dużo, dziel na linie
from datetime import (
datetime,
timedelta,
date,
time,
timezone
)
# ŹLE - NIGDY nie rób wildcard imports
from module import *
5. Spacje wokół operatorów
Używaj spacji dla czytelności, ale konsekwentnie.
# DOBRZE - operatory arytmetyczne
x = 5 + 10
y = x * 2
z = (x + y) / 2
# ŹLE - brak spacji
x=5+10
y=x*2
# DOBRZE - operatory porównania
if x == 5:
print("x wynosi 5")
if y >= 10 and z < 20:
print("Warunek spełniony")
# DOBRZE - przecinki (spacja po, nie przed)
lista = [1, 2, 3, 4, 5]
funkcja(a, b, c)
slownik = {'klucz': 'wartość', 'klucz2': 'wartość2'}
# ŹLE
lista = [1,2,3,4,5]
lista = [1 , 2 , 3] # Spacja przed przecinkiem
Argumenty domyślne – specjalny przypadek:
# DOBRZE - brak spacji w definicji funkcji
def funkcja(arg1, arg2=10, arg3="default"):
pass
# ŹLE - spacje w definicji
def funkcja(arg1, arg2 = 10, arg3 = "default"):
pass
# ALE w wywołaniu funkcji - spacje są!
funkcja(arg1=5, arg2=20, arg3="custom")
Slicing – brak spacji:
# DOBRZE
lista[1:5]
lista[::2]
lista[1:5:2]
# ŹLE
lista[1 : 5]
lista[: : 2]
6. Konwencje nazewnictwa
Różne elementy mają różne style nazewnictwa.
snake_case – małe litery z podkreśleniami
# DOBRZE - zmienne, funkcje, metody
user_name = "Jan"
total_count = 100
def calculate_sum(a, b):
return a + b
def get_user_data():
pass
PascalCase – każde słowo z wielkiej
# DOBRZE - klasy i wyjątki
class UserAccount:
pass
class DatabaseConnection:
pass
class InvalidEmailError(Exception):
pass
UPPER_CASE – wielkie litery z podkreśleniami
# DOBRZE - stałe
MAX_CONNECTIONS = 100
DEFAULT_TIMEOUT = 30
PI = 3.14159
API_KEY = "secret-key-123"
Specjalne konwencje:
# Jeden podkreślnik - "chroniony" atrybut
class MyClass:
def __init__(self):
self._internal_variable = 10 # Nie używaj z zewnątrz
# Dwa podkreślniki - "prywatny" (name mangling)
class MyClass:
def __init__(self):
self.__private_variable = 20
# Dwa podkreślniki z obu stron - metody magiczne (dunder)
class MyClass:
def __init__(self): # Konstruktor
pass
def __str__(self): # Reprezentacja string
return "MyClass instance"
7. Komentarze
Komentarze powinny być kompletnymi zdaniami, aktualne i wyjaśniać „dlaczego”, nie „co”.
# DOBRZE - wyjaśnienie złożonej logiki
# Sprawdzamy czy rok jest przestępny zgodnie z regułą:
# Rok podzielny przez 4 jest przestępny,
# CHYBA ŻE jest podzielny przez 100,
# ALE JEŚLI jest podzielny przez 400, to jednak jest przestępny
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
# ŹLE - komentarz powtarza kod
# Zwiększ x o 1
x = x + 1
# DOBRZE - komentarz inline z dwoma spacjami
result = calculate(x, y) # Kompensata za border
# ŹLE - brak spacji
result = calculate(x, y)# Komentarz
8. Porównania
Używaj właściwych operatorów do porównań, np. is, is not, == itp.
Interaktywna konsola Pythona (REPL)
REPL to skrót od Read-Eval-Print Loop (Czytaj-Wykonaj-Wyświetl-Powtórz). To interaktywne środowisko, w którym możesz pisać kod Pythona linia po linii i natychmiast widzieć rezultaty.
Uruchamianie REPL
Otwórz terminal i wpisz:
python
Zobaczysz coś podobnego:
Python 3.12.0 (main, Oct 2 2023, 14:30:00)
Type "help", "copyright", "credits" or "license" for more information.
>>>
Znak >>> to prompt – oznacza, że Python czeka na Twoje polecenie.
Podstawowe użycie REPL
>>> 2 + 2
4
>>> 10 * 5
50
>>> 100 / 3
33.333333333333336
>>> 2 ** 10
1024
>>> print("Hello, World!")
Hello, World!
>>> "Python"
'Python'
Wyjście z REPL
Są trzy sposoby:
>>> exit()
lub
>>> quit()
lub skrót klawiszowy: Ctrl + Z, potem Enter
IDLE – wbudowane IDE Pythona
IDLE (Integrated Development and Learning Environment) to prosty edytor kodu i środowisko programistyczne instalowane automatycznie razem z Pythonem. Jest to oficjalne, darmowe narzędzie stworzone specjalnie dla osób rozpoczynających naukę programowania.
Nazwa IDLE to także gra słów – jest to hołd dla Erica Idle’a, jednego z członków grupy Monty Python (od której Python wziął swoją nazwę).
IDLE znajdziesz w menu Start Windowsa po instalacji Pythona
Po uruchomieniu IDLE zobaczysz Python Shell – interaktywną konsolę Pythona. Działasz w niej jak w REPL