Karatasi ya kumbukumbu

Karatasi ya kudanganya ya Python: sintaksia, amri na kazi zilizojengwa ndani kwenye majedwali

Imesasishwa: · Skillaria.Top

Sintaksia ya Python inategemea kujongea badala ya mabano ya mikunjo: kizuizi kinachofuata koloni kinasogezwa kwa nafasi 4. Msingi ni vigezo bila kutangaza aina, masharti ya if/elif/else, mizunguko for na while, kazi def, na kazi zilizojengwa ndani kama print, len, range, input, type, pamoja na mbinu za nyuzi, orodha na kamusi.

Karatasi hii ya kudanganya ya Python inakusanya kwenye ukurasa mmoja kila kitu unachohitaji kuwa nacho karibu katika miezi ya kwanza: sintaksia ya Python, mizunguko, kazi zilizojengwa ndani, mbinu za nyuzi, orodha na kamusi, na amri za terminal. Kila jedwali ni marejeo mafupi yenye mifano inayofanya kazi, ambayo unaweza kuiweka moja kwa moja kwenye REPL.

Misingi ya sintaksia ya Python

Kipengele kikuu cha lugha ni kwamba vizuizi vinaelezwa kwa kujongea, si kwa mabano. Baada ya mstari wenye koloni (if, for, def, class) mistari inayofuata inasogezwa kwa nafasi 4. Kuchanganya tabu na nafasi hakuruhusiwi — utapata IndentationError.

MuundoMfanoMaelezo
Maoni# maandishikila kilicho baada ya # hadi mwisho wa mstari hupuuzwa
Kigezoage = 25aina haitangazwi, inaamuliwa na thamani
Upeanaji wa mara nyingia, b = 1, 2kufungua (unpacking); kubadilishana thamani: a, b = b, a
Kuchapishaprint("Habari", name)hoja zinatenganishwa kwa nafasi
Kuingizas = input("Jina: ")daima hurudisha nyuzi
F-stringf"{name}: {price:.2f}"kuingiza misemo na muundo wa kuonyesha
Alama ya ainacount: int = 0dokezo kwa IDE na wakaguzi, halikaguliwi wakati wa kuendesha
Kizuizi tupupasskishikilia nafasi pale sintaksia inahitaji mwili
Uagizajifrom math import sqrtkuunganisha moduli au jina kutoka ndani yake

Aina za data

AinaLiteraliInaweza kubadilishwa
int42, 1_000_000hapana
float3.14, 1e-3hapana
boolTrue, Falsehapana
str"maandishi", 'maandishi', """mistari mingi"""hapana
list[1, 2, 3]ndiyo
tuple(1, 2), (1,)hapana
dict{"a": 1}ndiyo
set{1, 2}, tupu — set()ndiyo
NoneTypeNone—

Waendeshaji

KundiWaendeshajiMfano → matokeo
Hesabu+ - * / // % **7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024
Ulinganisho== != < > <= >=1 < x < 10 — mnyororo wa ulinganisho
Mantikiand or notx or "chaguo-msingi"
Umilikiin, not in"a" in "abc" → True
Utambulishois, is notx is None
Upeanaji+= -= *= /=, :=if (n := len(s)) > 10: ...

Masharti na ulinganishaji

if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"

status = "mtu mzima" if age >= 18 else "mtoto"   # opereta wa masharti

match command:
    case "start":
        print("Inaanza")
    case "stop" | "exit":
        print("Inasimama")
    case _:
        print("Amri isiyojulikana")

Thamani za uongo ni False, None, 0, nyuzi tupu na makusanyo matupu, kwa hiyo badala ya if len(items) > 0 wanaandika tu if items.

Mizunguko katika Python: sintaksia ya for na while

Mzunguko wa for

Sintaksia ya mzunguko wa for katika Python: for kigezo in mfuatano: na mwili uliojongezwa. Mzunguko unapitia kitu chochote kinachoweza kurudiwa — nyuzi, orodha, kamusi, faili, range.

for i in range(5):              # 0 1 2 3 4
    print(i)

for i in range(10, 0, -2):      # 10 8 6 4 2
    print(i)

for i, fruit in enumerate(["tufaha", "peari"], start=1):
    print(i, fruit)

for name, score in zip(names, scores):
    print(name, score)

for key, value in prices.items():
    print(key, value)

Mzunguko wa while

attempts = 3
while attempts > 0:
    password = input("Nenosiri: ")
    if password == "secret":
        print("Umeingia")
        break
    attempts -= 1
else:
    print("Majaribio yameisha")   # hutekelezwa ikiwa hapakuwa na break
AmriInafanya nini
breakkutoka kwenye mzunguko kabla ya wakati
continuenenda kwenye marudio yanayofuata
else ya mzungukohutekelezwa ikiwa mzunguko umemalizika bila break
range(stop), range(start, stop, step)mfuatano wa namba, stop haijumuishwi

Orodha za kutengeneza (comprehensions)

squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100))   # usemi wa jenereta

Kazi

def greet(name: str, greeting: str = "Habari") -> str:
    """Inarudisha salamu."""
    return f"{greeting}, {name}!"

def total(*args, **kwargs):
    return sum(args), kwargs

square = lambda x: x * x
print(greet("Amina"))                 # Habari, Amina!
print(greet("Amina", greeting="Hujambo"))  # Hujambo, Amina!
KipengeleMaana
def f(a, b=1)kigezo chenye thamani ya chaguo-msingi
*argsidadi yoyote ya hoja za nafasi (tuple)
**kwargsidadi yoyote ya hoja zenye majina (kamusi)
returnkurudisha thamani; bila hiyo kazi itarudisha None
lambda x: ...kazi fupi isiyo na jina, ya usemi mmoja
global, nonlocalkubadilisha kigezo kutoka eneo la nje

Usitumie thamani ya chaguo-msingi inayoweza kubadilika kama def f(items=[]): orodha inaundwa mara moja tu na inakusanyika kati ya miito. Njia sahihi ni items=None na ndani yake if items is None: items = [].

Kazi zilizojengwa ndani za Python

Kazi zilizojengwa ndani za Python zinapatikana bila uagizaji. Hizi ni kazi kuu zinazoonekana karibu kila script.

KaziInafanya niniMfano → matokeo
print()inaonyesha thamaniprint(1, 2, sep="-") → 1-2
input()inasoma mstari kutoka kibodiint(input())
len()urefu wa kontena au nyuzilen("abc") → 3
type()aina ya kitutype(3.0) → <class 'float'>
isinstance()kukagua ainaisinstance(5, int) → True
int() float() str() bool()kubadilisha ainaint("42") → 42
list() tuple() set() dict()kuunda makusanyolist("ab") → ['a', 'b']
range()safu ya nambalist(range(3)) → [0, 1, 2]
enumerate()jozi (faharasa, kipengele)list(enumerate("ab")) → [(0, 'a'), (1, 'b')]
zip()inaunganisha mfuatano jozi kwa jozilist(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')]
sum() min() max()jumla, kiwango cha chini, cha juumax([3, 7, 1]) → 7
abs() round()thamani kamili na kuzungusharound(3.14159, 2) → 3.14
sorted()orodha mpya iliyopangwasorted(words, key=len, reverse=True)
reversed()kirudiaji kwa mpangilio wa nyumalist(reversed([1, 2])) → [2, 1]
map() filter()kutumia kazi / kuchujalist(map(str, [1, 2])) → ['1', '2']
any() all()angalau moja / zote ni kweliall(x > 0 for x in nums)
open()inafungua failiopen("a.txt", encoding="utf-8")
help() dir()msaada na orodha ya sifahelp(str.split), dir(list)
id() hash()kitambulisho na hash ya kituhash("a")

Kitabu bora cha marejeo kiko nawe kila wakati — kazi help() kwenye REPL: help(dict) itaonyesha mbinu zote za kamusi pamoja na maelezo, na dir(obj) — orodha ya majina yanayopatikana.

Mbinu za nyuzi

Sintaksia ya nyuzi za Python: nyuzi haibadiliki, na kila mbinu inarudisha nyuzi mpya. Kukata (slices) kunafanya kazi kama kwenye orodha: s[1:4], s[::-1] — kugeuza.

MbinuMfano → matokeo
upper() lower()"Py".upper() → 'PY'
capitalize() title()"hello world".title() → 'Hello World'
strip() lstrip() rstrip()" hi \n".strip() → 'hi'
split(sep)"a,b,c".split(",") → ['a', 'b', 'c']
join(iterable)"-".join(["a", "b"]) → 'a-b'
replace(old, new)"bata".replace("b", "k") → 'kata'
find() index()"hello".find("l") → 2; ikiwa haipo — -1 (kwa index — kosa)
count()"banana".count("a") → 3
startswith() endswith()"file.py".endswith(".py") → True
isdigit() isalpha() isspace()"123".isdigit() → True
removeprefix() removesuffix()"test_a".removeprefix("test_") → 'a'
zfill() center() ljust()"7".zfill(3) → '007'
format()"{} + {}".format(1, 2) → '1 + 2'

Amri za orodha ya Python

Orodha ni kontena linaloweza kubadilishwa na lenye mpangilio. Mbinu nyingi zinabadilisha orodha papo hapo na kurudisha None, kwa hiyo a = a.sort() ni kosa la kawaida.

OperesheniInafanya niniMfano
append(x)inaongeza mwishonia.append(4)
extend(iter)inaongeza vipengele vyotea.extend([5, 6])
insert(i, x)inaingiza kwa faharasaa.insert(0, "first")
remove(x)inafuta mara ya kwanza thamani inapotokeaa.remove(3)
pop(i)inafuta na kurudisha kipengele (chaguo-msingi la mwisho)last = a.pop()
clear()inafuta orodha yotea.clear()
index(x)faharasa ya mara ya kwanzaa.index("b")
count(x)idadi ya marudioa.count(1)
sort()inapanga papo hapoa.sort(key=str.lower)
reverse()inageuza papo hapoa.reverse()
copy()nakala ya juu juub = a.copy()
del a[i]kufuta kwa faharasa au kukatadel a[1:3]
Kukataa[start:stop:step]a[-1] — la mwisho, a[:3] — tatu za kwanza

Amri za kamusi ya Python

OperesheniInafanya niniMfano
d[key]thamani kwa ufunguo, ikiwa hakuna — KeyErrord["name"]
get(key, default)thamani au ya akibad.get("age", 0)
d[key] = valuekuongeza au kubadilishad["city"] = "Arusha"
keys() values() items()funguo, thamani, jozifor k, v in d.items():
update()kuunganisha na kamusi nyingined.update({"a": 1})
d1 | d2kamusi mpya iliyounganishwamerged = defaults | user
pop(key, default)kufuta na kurudisha thamanid.pop("tmp", None)
popitem()kufuta jozi iliyoongezwa mwishod.popitem()
setdefault(key, value)kurudisha thamani, na ikiwa ufunguo haupo — kuuundad.setdefault("tags", []).append("py")
key in dkukagua kama ufunguo upoif "name" in d:
dict.fromkeys()kamusi kutoka funguo zenye thamani mojadict.fromkeys("abc", 0)
len(d), del d[key]ukubwa na kufutadel d["old"]

Tuple na seti

OperesheniMfano → matokeo
Kufungua tuplex, y = (3, 4)
Kuongeza kwenye setis.add(5), kufuta — s.discard(5)
Muungano / makutano{1, 2} | {2, 3} → {1, 2, 3}; {1, 2} & {2, 3} → {2}
Tofauti{1, 2} - {2} → {1}
Kuondoa marudio kwenye orodhalist(dict.fromkeys(items)) — pamoja na kuhifadhi mpangilio

Vighairi na mafaili

try:
    number = int(input("Namba: "))
except ValueError as err:
    print("Hii si namba:", err)
else:
    print("Imefanikiwa")
finally:
    print("Inatekelezwa kila wakati")

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("mstari\n")

with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.rstrip())
KighairiKinatokea lini
SyntaxError, IndentationErrorkosa katika sintaksia au kujongea
NameErrorjina halijafafanuliwa (kosa la kuandika)
TypeErroroperesheni yenye aina isiyofaa: "1" + 1
ValueErroraina sahihi, lakini thamani si sahihi: int("abc")
IndexError, KeyErrorhakuna faharasa au ufunguo kama huo
FileNotFoundErrorfaili halikupatikana
ZeroDivisionErrorkugawanya kwa sifuri

Madarasa

from dataclasses import dataclass

class Dog:
    def __init__(self, name: str):
        self.name = name

    def bark(self) -> str:
        return f"{self.name}: Wau!"

@dataclass
class Point:
    x: float
    y: float

print(Dog("Fifi").bark())    # Fifi: Wau!
print(Point(1, 2))           # Point(x=1, y=2)

Moduli zilizojengwa ndani za Python

Maktaba ya kawaida inakuja pamoja na mkalimani — inatosha kufanya import.

ModuliKwa niniMfano
mathhisabatimath.sqrt(16) → 4.0
randomnamba za kubahatisharandom.randint(1, 6), random.choice(items)
datetimetarehe na wakatidatetime.date.today()
pathlibnjia na mafailiPath("data").glob("*.csv")
os, sysmfumo, vigezo vya mazingira, hojaos.environ.get("HOME"), sys.argv
jsonkusoma na kuandika JSONjson.loads(text), json.dumps(obj, ensure_ascii=False)
csvjedwali za CSVcsv.DictReader(f)
collectionsCounter, defaultdict, dequeCounter("banana").most_common(1) → [('a', 3)]
itertoolsmchanganyiko na minyororo ya virudiajiitertools.chain(a, b)
remisemo ya kawaida (regular expressions)re.findall(r"\d+", s)
timekusitisha na kupima mudatime.sleep(1), time.perf_counter()
asynciomsimbo wa usawazishajiasyncio.run(main())

Katika Python 3.15 kuna lazy import (PEP 810): lazy import pandas as pd huahirisha upakiaji wa moduli hadi itakapotumika kwa mara ya kwanza, na script yenye utegemezi mzito huanza kwa kasi zaidi.

Amri za Python kwenye terminal

Kundi tofauti la maswali «amri za python» ni amri za kuendesha mkalimani na kusakinisha maktaba. Kwenye Windows badala ya python3 kwa kawaida huandikwa python au py.

AmriInafanya nini
python3 --versionkuonyesha toleo
python3kufungua kiweko shirikishi REPL (kutoka — exit())
python3 script.pykuendesha faili
python3 -c "print(2 + 2)"kutekeleza mstari mmoja
python3 -m venv .venvkuunda mazingira pepe
source .venv/bin/activate / .venv\Scripts\activatekuwasha mazingira (Linux, macOS / Windows)
python3 -m pip install requestskusakinisha kifurushi
pip list, pip freeze > requirements.txtorodha ya vifurushi na kuvihifadhi
pip install -r requirements.txtkusakinisha utegemezi kutoka faili
python3 -m http.server 8000seva rahisi ya wavuti kwenye folda ya sasa
uv init, uv add requests, uv run main.pymradi, utegemezi na kuendesha kupitia kidhibiti uv

Makosa ya kawaida ya wanaoanza

  • Kulinganisha kwa = — katika sharti inahitajika ==; = moja ni upeanaji.
  • Koloni lililosahauliwa baada ya if, for, def linatoa SyntaxError.
  • Kujumlisha nyuzi na namba: "Umri: " + 25 ni kosa, andika f"Umri: {25}".
  • Kubadilisha orodha wakati wa kuizungusha — pitia nakala for x in a[:] au jenga orodha mpya.
  • input() hurudisha nyuzi — kwa hesabu funga kwenye int() au float().

Hitimisho

Sintaksia ya Python inategemea kujongea, koloni na seti ndogo ya miundo: masharti, mizunguko ya for na while, kazi, madarasa. Ongeza kwao kazi kadhaa zilizojengwa ndani na mbinu za nyuzi, orodha na kamusi — utamaliza sehemu kubwa ya kazi za kila siku. Hifadhi karatasi hii, na mambo haya yakishakuwa ya kawaida, endelea na moduli na usawazishaji; yote haya yanafafanuliwa kwa hatua kwa vitendo katika kozi «Python 3.15: kutoka mwanzoni hadi mtaalamu».

Maswali ya mara kwa mara

Ni nafasi ngapi za kujongea katika Python?

Kwa kiwango cha PEP 8 — nafasi 4 kwa kila ngazi. Muhimu ni kuwa sawa katika kizuizi chote na kutochanganya na tabu.

Orodha inatofautianaje na tuple?

Orodha inaweza kubadilishwa, unaweza kuiongezea na kuipanga papo hapo; tuple haibadiliki, kwa hiyo inafaa kama ufunguo wa kamusi na kwa seti za thamani zisizobadilika.

Ninawezaje kuona mbinu zote za kitu moja kwa moja kwenye Python?

Ita dir(obj) kwa orodha ya majina na help(obj) kwa maelezo — kwa mfano help(str) itaonyesha mbinu zote za nyuzi.

Kuna tofauti gani kati ya sort() na sorted()?

Mbinu list.sort() inapanga orodha yenyewe na kurudisha None, wakati kazi sorted() inarudisha orodha mpya na inafanya kazi na mkusanyiko wowote unaoweza kurudiwa.

Je, mstari unahitaji nukta-koma mwishoni?

Hapana. Nukta-koma inaruhusiwa kwa amri kadhaa kwenye mstari mmoja, lakini kwenye msimbo wa kawaida kila amri inaandikwa kwenye mstari wake.