Šioje pamokoje papasakosime keletą dalykėlių, kurie palengvina programų rašymą.
print
parametrai
Kaip žinia, print
atspausdina keletą reikšmių, atskirdama tarpais. Jos elgesį galima truputį pakoreguoti, naudojant įvardintus argumentus (keyword arguments). print
funkcija "žino", kad gali taip pavadintus argumentus gauti, bet jei negauna, naudoja jų numatytas reikšmes.
- argumentas
sep
(sutrumpintas "separator") nurodo, kuo atskirti spausdinamas reikšmes. - argumentas
end
leidžia pakeisti eilutės-pabaigos("end-of-line") simbolį.
Panagrinėkite keletą pavyzdžių, ir suprasite, kaip naudoti įvardintus (vardinius) argumentus.
Įvardinami argumentai turi būti pateikti po įprastinių. Kitu atveju sulauksime klaidos pranešimo. Tarpusavy įvardinti argumentai gali būt išdėstyti bet kokia tvarka.
Funkcijų argumentų numatytos reikšmės
Kaip kątik pasiaiškinome, funkcijose kai kurie argumentai gali turėti numatytas (standartines) reikšmes (default values). Tai patogu, jei argumentų daug ar daugumoje atvejų tinka numatytieji.
Kai yra keli argumentai su numatytom reikšmėm, pravers vardiniai argumentai:
Tinkami kintamųjų/funkcijų pavadinimai
- Pavadinimuose gali būti raidės, skaičiai ir apatiniai brūkšniai (
_
). - Pavadinimas negali prasidėti skaičiumi.
- Pitone yra skirtumas tarp mažųjų ir didžiųjų raidžių.
Taigi mano_3cias_kintamasis
yra tinkamas, o 3ias_kintamasis
- netinkamas pavadinimas.
Mažėjanti seka for
cikle ir kt. perrinkimo variacijos
Prisiminkime, kaip, naudodami for
ciklą, galime perrinkti skaičius:
Tačiau, kartais prireikia apsukti tvarką. Kaip parašyti funkciją, kuri perrinks skaičius mažėjančia tvarka? Tam galima iškviesti range
ir su trečiu parametru - žingsniu:
Pastebėkime, kad range(0, 5)
veikia taip pat kaip range(0, 5, 1)
: standartinė žingsnio reikšmė yra 1. Bet kuriuo atveju, būkime atsargūs range(start, stop, step)
veikia tol, kol nesiekia stop
reikšmės. Daugiau informacijos galite rasti Pitono dokumentacijoje.
Panašiai galime naudoti tekstas[x:y:-1]
, kad gautme apsuktą teksto fragmentą. Arba, jei zodis="Karlson"
, tai zodis[x:y:2]
duos naują žodį, kuriame teliks kas antra raidė x, x+2, x+4, ...
-- gausis "alo"
.
Mažėjančią eilę su for
ciklu galima gauti ir taip: reversed(range(x, y))
. Ši formuluotė pradės skaičiavimą nuo y-1
ir baigs ties x
.
Kompaktiškas kodas
Python kai kuriuos įprastus veiksmus galima užrašyti trumpiau - tai patogu, kai šie veiksmai dažnai kartojasi arba programuotojas nori greit užrašyti programą.
Puslapyje mes šių triukų dažnai nenaudojame, nes nepratusiems būtų sunkiau suprasti. |
Reikšmės pakeitimo veiksmai
Pitonas leidžia rašyti "x += 1
", tai reiškia tą patį kaip ir "x = x + 1
" -- padidina x
vienetu :
Analogiškai veikia ir dalyba be liekanos (//=
), liekana (%=
), ir kėlimas laipsniu (**=
).
Sudėtiniai sakiniai vienoje eilutėje (inline blocks)
for
, if
, else
, elif
, while
, ir def
priklausantys veiksmai būna išvadinti naujose eilutėse, pvz:
if x==y: «veiksmai» # papildomai atitraukta, daug eilučiųKai priklausančius veiksmus galima išvardinti vienoje eilutėje, Pitonas leidžia naudoti alternatyvų užrašymą:
if x==y: «veiksmai» # vienoje eilutėjeŠiais atvejais, keli nuoseklūs veiksmai gali būti atskirti kabliataškiais. Pavyzdžiui:
Tačiau tam yra apribojimų, negali būti naudojami veiksmai su dvitaškiu (if
, for
ir pan.). Pavyzdžiui, if 2>1: if 4>3: print()
yra sintaksės klaida.
Priskyrimas iš kart keliems kintamiesiems (multiple assignment)
Pitonas leidžia sujungti kelis priskyrimus į vieną veiksmą:
Tai leidžia išpręsti pirmose pamokose matytą uždavinį su reikšmių apkeitimu vienoje eilutėje!
Taip pat galima "išpakuoti" sąrašą, jei kintamųjų yra tiek, kiek sąraše reikšmių, pvz:
Palyginimų "grandinė"
Pitonas leidžia apjungti keletą nuoseklių palyginimų į vieną:
Reikšmės parinkimas pagal išvadą
Kai tikrinam sąlygą, ir priklausomai nuo jos norim priskirt reikšmę, reikia užrašyti 2 priskyrimus:
Arba reikšmę galima parinkti trumpiau - vienoje eilutėje:
«viena reikšmė» if «sąlyga» else «kita reikšmė»
Sąlygų tikrinimas pagal kintamojo reikšmę
Kartais reikia patikrinti, ar kintamasis turi pradinę reikšmę, ar jau pasikeitus. Pradinė reikšmė skaitliukui dažniausiai būna 0, sąrašui - tuščias sąrašas [], o kartais reikšmė None. Šias reikšmes Python supranta, kaip analogiškais loginiam False. Todėl galima trumpint sąlygų užrašymą:
Numatytos reikšmės range()
komandai ir atkarpos galams [:]
range(n)
yra trumpesnis būdas parašyti range(0, n)
-- 0
yra numatytoji pradžios reikšmė.
Teksto/sąrašo atkarpos galai irgi turi numatyas reikšmes. Standartinė pradžios reikšmė yra 0
, o pabaigos - sąrašo/teksto ilgis. Pvz, pilna atkarpa būtų [:]
.
None
Kai kurių funkcijų pagrindinė paskirtis yra grąžinti reikšmę, pavyzdžiui abs(x)
. Bet tai neprivaloma, kai kurios funkcijos tieisog kažką pakeičia ar atspausdina, jose nėra return
komandos (pvz, print()
). Tuomet standartiškai grąžinama None
reikšmė.
None
naudojamas įvairiai - kartais juo pasižymima, kad kintamajam prasminga reikšmė dar nepriskirta. Pabandę type(None) pamatysime, kad yra specialus duomenų tipas NoneType
.
Dabar užduotis - atidžiai sekite veiksmų eigą su daug type
ir print
.
print(type(print(type(type(print(print()))))))
atspausdins 4 eilutes. Sudėkite jas teisinga tvarka.- <class 'NoneType'>
- None
- «blank line»
- <class 'type'>