Namai / Programos / Kur naudojamas Python? Kokia programinė įranga parašyta Python'e? Python, praktiniai pavyzdžiai

Kur naudojamas Python? Kokia programinė įranga parašyta Python'e? Python, praktiniai pavyzdžiai

Sveiki visi!

Perskaityta sintaksė, lengvai mokoma, aukšto lygio kalba, objektyvi programavimo kalba (OOP), galingas, interaktyvus režimas, daug bibliotekų. Daugybė kitų pranašumų ... Ir viskas viena kalba.
  Pirmiausia pasinerkite į galimybes ir sužinokite, ką „Python“ gali padaryti?

Kodėl man reikia tavo Python?

  Daugelis pradedančiųjų programuotojų užduoda panašius klausimus. Tai panašu į telefono pirkimą, sakykite, kodėl turėčiau pirkti šį telefoną, o ne šį?
Programinės įrangos kokybė
  Daugeliui, įskaitant mane, pagrindiniai pranašumai yra skaitoma sintaksė. Ne viena kalba gali jais pasigirti. Python kodą lengviau perskaityti, o tai reiškia, kad jį naudoti ir prižiūrėti yra daug lengviau, nei naudojant kodą kitomis scenarijų kalbomis. Python yra moderniausi kodo pakartotinio naudojimo mechanizmai, tokie kaip OOP.
Palaikymo bibliotekos
  „Python“ yra daugybė sukompiliuotų ir nešiojamų funkcijų, žinomų kaip standartinė biblioteka. Ši biblioteka suteikia daugybę funkcijų, kurių reikia programų programose, pradedant teksto paieška pagal šabloną ir baigiant tinklo funkcijomis. Python leidžia plėstis tiek savo bibliotekų sąskaita, tiek dėl kitų kūrėjų sukurtų bibliotekų.
Programos perkeliamumas
Daugelis Python programų veikia nepakitę visose pagrindinėse platformose. Kodo perkėlimas iš „Linux“ į „Windows“ yra tiesiog programų failų kopijavimas iš vieno kompiuterio į kitą. „Python“ taip pat suteikia daugybę nešiojamų grafinių sąsajų kūrimo galimybių.
Plėtros greitis
  Lyginant su kalbų, tokių kaip C, C ++ ar „Java“, sudarymu ar tvirtinimu, „Python“ labai padidina kūrėjų produktyvumą. „Python“ kodo dydis paprastai yra trečdalis ar net penktadalis lygiaverčio C ++ arba „Java“ kodo, o tai reiškia mažiau klaviatūros įvesties, mažiau derinimo laiko ir mažiau priežiūros. Be to, „Python“ programos paleidžiamos nedelsiant, apeinant ilgą rinkinį ir susiejant veiksmus, kurių reikalaujama kai kuriose kitose programavimo kalbose, o tai dar labiau padidina programuotojo produktyvumą.

Kur naudojamas Python?

  • „Google“ naudoja „Python“ savo paieškos variklyje ir sumoka už „Python“ kūrėjo Guido van Rossum darbą
  • Tokios kompanijos kaip „Intel“, „Cisco“, „Hewlett-Packard“, „Seagate“, „Qualcomm“ ir IBM naudoja „Python“ aparatūros testavimui.
  • „YouTube“ vaizdo įrašų bendrinimo paslauga yra labai įdiegta „Python“
  • NSA naudoja „Python“ intelekto šifravimui ir analizei
  • „JPMorgan Chase“, „UBS“, „Getco“ ir „Citadel“ naudokite „Python“ finansinei rinkai prognozuoti
  • Populiari programa „BitTorrent“, skirta dalintis failais lygiaverčiuose tinkluose, parašyta Python'e
  • „Google“ populiarioje „App Engine“ žiniatinklio sistemoje „Python“ naudojama kaip programų programavimo kalba
  • NASA, „Los Alamos“, JPL ir „Fermilab“ moksliniam skaičiavimui naudoja „Python“.
  ir kitos įmonės taip pat vartoja šią kalbą.

Literatūra

  Taigi mes geriau supratome Python programavimo kalbą. Galime atskirai pasakyti, kad „Python“ pranašumai yra tai, kad jame yra daug kokybiškos literatūros. Ne kiekviena kalba tuo gali pasigirti. Pavyzdžiui, „JavaScript“ programavimo kalba negali patikti vartotojams, turintiems daug literatūros, nors kalba yra tikrai gera.

Čia yra šaltinių, kurie padės geriau pažinti Pythoną, o galbūt tapti Guido van Rossum ateitimi.
* Kai kurie šaltiniai gali būti anglų kalba. Nenustebkite tuo, dabar daug puikios literatūros yra parašyta angliškai. O norėdami patys programuoti, turite žinoti bent jau pagrindines anglų kalbos žinias.

Labai rekomenduoju perskaityti knygą pirmiausia - Marką Lutzą. „Python“ 4 leidimas. Knyga išversta į rusų kalbą, todėl neturėtumėte bijoti, jei staiga nemokate anglų kalbos. Bet tai jau ketvirtasis leidimas.

Tiems, kurie moka anglų kalbą, galite perskaityti dokumentus oficialioje „Python“ svetainėje. Ten viskas aprašyta gana aiškiai.

Ir jei jūs daugiau priimate informaciją apie vaizdo įrašą, galiu patarti „Google“ pamokoms, kurias vedė Nickas Parlante'as, studentas iš Stanfordo. Šešios „YouTube“ vaizdo įrašų paskaitos  . Bet medaus statinėje yra lašas deguto ... Jis veda angliškai su angliškais subtitrais. Bet tikiuosi, kad tai sustabdys keletą.

Ką daryti, jei skaitau knygas, bet nežinau, kaip pritaikyti žinias?

  Jokios panikos!
  Patariu perskaityti Marko Lutzo knygą. „Python“ programavimas (4-asis leidimas). Anksčiau mes „mokėmės“, o paskui „programavome“. „Mokydamasis“ - įgyjate žinių apie „Python“, „Programavime“ - Markas moko, kaip tai pritaikyti būsimose programose. Knyga yra labai naudinga. Ir manau, kad tau vieno užtenka.

Aš noriu praktikuoti!

  Lengva.
  Aukščiau rašiau apie Nicko Parlante'o vaizdo paskaitas „YouTube“, bet jie taip pat turi keletą užduočių svetainėje. Įdomius galvosūkius patariu visiems. Anglų kalba

Programavimo mokykla „Codecademy“ neseniai pradėjo interaktyvius „Python“ kursus. Praėjus kiekvieną mini kursą, jums bus leista atlikti tam tikrą „praktiką“. Pamokos dėstomos anglų kalba, tačiau viskas prieinama ir suprantama. Pradedama nuo kintamųjų ir duomenų tipų. Pridėti žymas

Pereikime nuo kalbos teorijos prie praktikos - tikri Python'o darbo pavyzdžiai ir greitas jo galimybių tyrimas.

Python sintaksė
  Pagrindinė „Python“ savybė yra ta, kad jai nereikia aiškiai nurodyti kintamųjų ir ji yra jautri didžiosiomis ir mažosiomis raidėmis, t. Y var  neprilygsta kintamajam Var  arba Var  Yra trys skirtingi kintamieji.
  Įdomi „Python“ savybė yra ta, kad joje nėra operatoriaus skliaustų. (pradžia ... pabaiga Pascal arba (..) C)vietoj to, blokai yra įterpti: tarpai arba skirtukai, kaip kalba Rubinas. Operatoriai įeina į bloką dvitaškio dėka. Vienos eilutės komentarai prasideda svaro ženklu # daugia eilutė prasideda ir baigiasi trimis dvigubomis kabutėmis ””” . Norėdami priskirti reikšmę kintamajam, naudokite ženklą = , o palyginimui - == . Norėdami padidinti kintamojo vertę arba įtraukti į eilutę, naudokite += , ir sumažinti -= . Visos šios operacijos gali sąveikauti su dauguma tipų, įskaitant stygas. Pvz .:

\u003e\u003e\u003e myvaras \u003d 3
  \u003e\u003e\u003e myvaras + \u003d 2
  \u003e\u003e\u003e myvaras - \u003d 1
  "" "Tai yra kelių eilučių komentaras."
  Į tris dvigubas kabutes įklijuotos eilutės nepaisomos.
  \u003e\u003e\u003e mystring \u003d "Sveiki"
  \u003e\u003e\u003e paslaptingas + \u003d "pasaulis".
  \u003e\u003e\u003e spausdinimo paslaptis
  Sveikas pasaulis
  # Kita eilutė pasikeičia
  kintamųjų reikšmės vietose. (Tik viena eilutė.)
  \u003e\u003e\u003e myvaras, paslaptingas \u003d paslaptingas, myvaras

Python duomenų struktūros
  Python yra duomenų struktūros, tokios kaip sąrašus, tuples  ir žodynai.
Python sąrašai  panašiai kaip vienmatės masyvai (vis dėlto galite naudoti sąrašą, kuriame yra ir kiti sąrašai - daugiamatį masyvą).
Tuples  - nekintantys sąrašai.
Žodynai  - Sąrašai taip pat, bet rodyklės gali būti bet kokio tipo, ne tik skaitinės.
  Python „masyvuose“ gali būti bet kokio tipo duomenų, tai yra, viename masyve gali būti tiek skaičių, tiek eilutės, tiek kitų duomenų tipai. Masyvai prasideda rodykle 0 , o paskutinį elementą galima gauti indeksu -1 . Galite priskirti kintamiesiems funkcijas ir atitinkamai jas naudoti.

\u003e\u003e\u003e sample \u003d, ("a", "tuple")] # Sąrašą sudaro sveikas skaičius, kitas sąrašas ir tuple
  \u003e\u003e\u003e mylist \u003d ["1 sąrašo elementas", 2, 3.14] # Šiame sąraše yra eilutė, sveikasis skaičius ir trupmeninis skaičius
  \u003e\u003e\u003e mylist \u003d "Vėl išvardyti 1 elementą" # Pakeiskite pirmąjį (nulio) elementą mano sąrašo lape
  \u003e\u003e\u003e mylist [-1] \u003d 3.14 # Pakeiskite paskutinį lapo elementą
  \u003e\u003e\u003e mydict \u003d („1 raktas“: „1 reikšmė“, 2: 3, „pi“: 3,14) # Sukurkite žodyną su skaitiniais ir sveikaisiais indeksais
  \u003e\u003e\u003e mydict ["pi"] \u003d 3.15 # Pakeisti žodyno elementą rodyklėje „pi“.
  \u003e\u003e\u003e mytuple \u003d (1, 2, 3) # Nustatykite kartelę
  \u003e\u003e\u003e myfunction \u003d len #Python leidžia deklaruoti funkcijos sinonimus
  \u003e\u003e\u003e spausdinti mano funkciją (sąrašas)
3

Taip pat galite naudoti dalį masyvo, nurodydami pirmąjį ir paskutinįjį indeksus per dvitaškį : . Šiuo atveju masyvo dalis nuo pirmojo rodyklės iki antrojo neįtraukta. Jei pirmasis elementas nenurodomas, skaičiavimas pradedamas nuo masyvo pradžios, o jei paskutinis nenurodomas, masyvas skaitomas iki paskutinio elemento. Neigiamos vertės lemia elemento padėtį nuo galo. Pvz .:

\u003e\u003e\u003e mylist \u003d [„1 sąrašo elementas“, 2, 3.14]
  \u003e\u003e\u003e print mylist [:] # Visi masyvo elementai yra perskaityti
  [„1 sąrašo punktas“, 2, 3.1400000000000001]
\u003e\u003e\u003e print mylist # Skaito nulinį ir pirmąjį masyvo elementus.
  [„1 sąrašo punktas“, 2]
  \u003e\u003e\u003e spausdinti mano sąrašą [-3: -1] # Elementai skaitomi nuo nulio (-3) iki sekundės (-1) (neįskaičiuota)
  [„1 sąrašo punktas“, 2]
  \u003e\u003e\u003e spausdinti mano sąrašą # Skaitykite elementus nuo pirmo iki paskutinio

Python dažnai lyginamas su Ruby ir, turiu pasakyti, ne veltui

Python stygos
  Linijos Python'e yra atskirtos dvigubai   arba vienišas   kabutės. Pavienės kabutės gali būti kabutėse, ir atvirkščiai. Kodo eilutė „Jis pasakė„ labas “!“  bus rodomas kaip „Jis pasakė„ labas “!“. Jei jums reikia naudoti kelių eilučių eilutę, tada ši eilutė turi prasidėti arba baigtis trimis dvigubomis kabutėmis “”” . Taip pat galite pakeisti elementų rinkinius ar žodynus į stygų šabloną. Procentinis ženklas %   tarp eilutės ir rinkinio pakeičia eilutės simbolius % s  ant virbalo elemento. Žodynai leidžia įterpti elementą į nurodytą rodyklę į eilutę - tam reikia naudoti formos struktūrą % (rodyklė) s. Šiuo atveju vietoj % (rodyklė) s  pateiktoje rodyklėje bus pakeista žodyno vertė.
\u003e\u003e\u003e spausdinti "Vardas:% s \\ nSkaičius:% s \\ nSring:% s"% (myclass.name, 3, 3 * "-")
  Vardas: Poromenos
  Skaičius: 3
  Styga: ---

StrString \u003d "" "Šis tekstas yra
  keliose eilutėse "" "

  \u003e\u003e\u003e spausdinti "Šis% (veiksmažodis) a% (daiktavardis) s." % („daiktavardis“: „test“, „veiksmažodis“: „yra“)
  Tai yra testas.

Python teiginiai
  Operatoriai tuo tarpu, jei, už  sudaro poslinkio operatorius. Operatoriaus analogas pasirinkti  ne, taigi jūs turite tik padaryti jei. Pareiškime   lygina kintamąjį ir sąrašą. Norint gauti skaičių sąrašą prieš numerį , turite naudoti funkciją diapazonas (). Pvz .:

rangelist \u003d range (10) # Gaukite dešimties skaitmenų sąrašą (nuo 0 iki 9)
  \u003e\u003e\u003e spausdinimo rangelistas

  numeriui rangelist: # Nors kintamasis skaičius (kuris kaskart didėja po vieną) yra sąraše ...
  # Patikrinkite, ar kintamasis įtrauktas
  # skaičiai iš daugybės skaičių (3, 4, 7, 9)
  jei skaičius yra (3, 4, 7, 9): # Jei kintamojo numeris yra eilutėje (3, 4, 7, 9) ...
  # Operacija „pertrauka“ numatyta
  # bet kuriuo metu išeikite iš linijos
  pertrauka
  dar:
  # „Tęsti“ slenka
  # ciklas. Čia to nereikia, nes po šios operacijos
  # bet kokiu atveju programa grįžta prie ciklo apdorojimo
  tęsti
  dar:
  # „Else“ neprivaloma. Sąlyga įvykdyta,
  # jei kilpa nebuvo nutraukta su pertrauka.
  perduoti # nieko nedaryti

Jei rangelist \u003d\u003d 2:
  spausdinti "Antrasis elementas (sąrašai pagrįsti 0) yra 2"
  elif rangelist \u003d\u003d 3:
spausdinti "Antrasis elementas (sąrašai pagrįsti 0) yra 3"
  dar:
  spausdinti „Dunno“

Kol rangelistas \u003d\u003d 1:
  praeiti

Anglišką (originalią) „Zen Zen“ versiją išleido „Python“ vertėjas, naudodamas šią komandą importuoti (ji veikia vieną kartą).

Python funkcijos
  Raktinis žodis naudojamas deklaruoti funkciją. def. Funkcijos argumentai pateikiami skliausteliuose po pavadinimo. Galite nurodyti pasirenkamus argumentus, suteikdami jiems numatytąją reikšmę. Funkcijos gali grąžinti raides, tokiu atveju grąžintas reikšmes reikia rašyti atskirtas kableliais. Raktažodžiai lambda  tarnauja deklaruojant elementarias funkcijas. Pavyzdys:
# arg2 ir arg3 yra pasirenkami argumentai, paimkite reikšmę, paskelbtą pagal numatytuosius nustatymus,
  #, jei skambinant funkcijai nenustatysite kitokios vertės.
  def funkcijos sutrikimas (arg1, arg2 \u003d 100, arg3 \u003d "testas"):
  grįžti arg3, arg2, arg1
  # Funkcija iškviečiama su pirmojo argumento reikšme - „1 argumentas“, antrasis - pagal nutylėjimą ir trečiojo - „Pavadintas argumentas“.
  \u003e\u003e\u003e ret1, ret2, ret3 \u003d mano funkcija („Argumentas 1“, arg3 \u003d „Pavadintas argumentas“)
  # ret1, ret2 ir ret3 yra atitinkamai „Pavadintas argumentas“, 100, „Argumentas 1“
  \u003e\u003e\u003e spausdinti ret1, ret2, ret3
  Pavadintas 100 argumentas 1 argumentas

  # Šis įrašas atitinka def f (x): grįžti x + 1
  functionvar \u003d lambda x: x + 1
  \u003e\u003e\u003e spausdinimo funkcijos variantas (1)
2

Python klasės
  Python apsiriboja daugybiniu paveldėjimu klasėse. Vidiniai kintamieji ir vidiniai klasės metodai prasideda dviem brūkšniais: __ (pavyzdžiui: __myprivatedefault) Taip pat galite priskirti klasės kintamajam vertę iš išorės, pavyzdžiui:

klasės „Myclass“:
  dažnas \u003d 10
  def __init __ (savęs):
  savaime kintamas \u003d 3
  def savifunkcija (savaime, arg1, arg2):
  grįžti savarankiškai

  # Čia paskelbėme klasę „Myclass“. Inicijuojant klases, funkcija __init__ iškviečiama automatiškai.
  \u003e\u003e\u003e classinstance \u003d Myclass () # Mes inicijavome klasę, o kintamasis, kurio kintamasis turi reikšmę, įgijo 3 vertę, kaip nurodyta inicializacijos metode.
  \u003e\u003e\u003e classinstance.myfunction (1, 2) # Myclass klasės myfunction metodas grąžina kintamojo kintamojo reikšmę.
3
  # Bendras kintamasis deklaruojamas visose klasėse
  \u003e\u003e\u003e classinstance2 \u003d Myclass ()
  \u003e\u003e\u003e classinstance.common
10
  \u003e\u003e\u003e classinstance2.common
10
  # Todėl, jei mes pakeisime jo vertę „Myclass“ klasėje, jie pasikeis
  # ir jo vertės objektuose, kuriuos inicijavo „Myclass“ klasė
  \u003e\u003e\u003e Myclass.common \u003d 30
  \u003e\u003e\u003e classinstance.common
30
  \u003e\u003e\u003e classinstance2.common
30
  # Ir čia mes nekeičiame klasės kintamojo. Vietoj to
  # deklaruojame jį objekte ir priskiriame jam naują vertę
  \u003e\u003e\u003e classinstance.common \u003d 10
  \u003e\u003e\u003e classinstance.common
10
  \u003e\u003e\u003e classinstance2.common
30
\u003e\u003e\u003e Myclass.common \u003d 50
  # Dabar klasės kintamojo pakeitimas neturės įtakos
  # kintami šios klasės objektai
  \u003e\u003e\u003e classinstance.common
10
  \u003e\u003e\u003e classinstance2.common
50

  # Kita klasė yra „Myclass“ klasės paveldėtoja,
  # paveldėdamas savo savybes ir metodus, be to, klasė gali
  # paveldėtas iš kelių klasių, šiuo atveju - įrašas
  # tokia: klasė Kita klasė („Myclass1“, „Myclass2“, „MyclassN“)
  klasė Kita klasė (Myclass):
  def __init __ (savęs, arg1):
  savaime kintamas \u003d 3
  spausdinti arg1

  \u003e\u003e\u003e classinstance \u003d Kita klasė („labas“)
  labas
  \u003e\u003e\u003e classinstance.manfunkcija (1, 2)
3
  # Ši klasė neturi bandomosios savybės, bet mes galime
  # deklaruoja tokį objekto kintamąjį. Be to
  # šis kintamasis bus tik klasės atstovas.
  \u003e\u003e\u003e classinstance.test \u003d 10
  \u003e\u003e\u003e classinstance.test
10

Python išimtys
  Išimtims būdinga bandymo, išskyrus struktūrą, pavyzdžiui:

def somefunction (): pabandykite:
  # Padalijimas iš nulio sukelia klaidą
10 / 0
  išskyrus „ZeroDivisionError“:
  # Bet programa neatlieka „netinkamos operacijos“,
  # ir apdoroja išimties bloką, atitinkantį klaidą „ZeroDivisionError“
  spausdinti „Oi, negalioja“.

  \u003e\u003e\u003e fnexcept ()
  Oi, neteisinga.

Importuoti į „Python“
  Procedūra gali būti sujungta su Python išorinėmis bibliotekomis importuotikur   Ar yra papildinių bibliotekos pavadinimas. Taip pat galite naudoti komandą nuo importokad galėtumėte naudoti atskirą funkciją   iš bibliotekos . Pavyzdys:

importuoti atsitiktinai # Importuoti biblioteką „atsitiktinai“
  nuo laiko importuoti laikrodį # Ir tuo pačiu metu funkcija „laikrodis“ iš bibliotekos „laikas“

Randomint \u003d random.randint (1, 100)
  \u003e\u003e\u003e atspausdinti randomint
64

Kalba turi aiškią ir nuoseklią sintaksę, apgalvotą moduliškumą ir mastelį, todėl „Python“ programoje parašytų programų šaltinio kodą lengva perskaityti.

Dirbkite su „Python“ failų sistema
  Python turi daugybę integruotų bibliotekų. Žemiau pateiktas pavyzdys paaiškina bandymą išsaugoti sąrašo struktūrą dvejetainiame faile, perskaityti jį ir išsaugoti eilutę tekstiniame faile. Norėdami pakeisti duomenų struktūrą, naudojama standartinė agurkų biblioteka.
importuoti marinatą
  mylist \u003d [„This“, „is“, 4, 13327]
  # Norėdami rašyti, atidarykite failą C: \\ binary.dat. Simbolis „r“
  # neleidžia pakeisti specialių simbolių (tokių kaip \\ n, \\ t, \\ b ir tt).
  myfile \u003d failas (r „C: \\ binary.dat“, „w“)
  pickle.dump (mano sąrašas, mano failas)
  myfile.close ()

„Myfile \u003d file“ (r „C: \\ text.txt“, „w“)
  myfile.write („Tai yra pavyzdinė eilutė“)
  myfile.close ()

„Myfile \u003d file“ (r „C: \\ text.txt“)
  \u003e\u003e\u003e atsispausdinti „myfile.read“ ()
  "Tai yra pavyzdinė eilutė"
  myfile.close ()

  # Atidarykite failą skaitymui
  myfile \u003d failas (r „C: \\ binary.dat“)
  loadinglist \u003d marinatas.krauti („myfile“)
  myfile.close ()
  \u003e\u003e\u003e atspausdintų krovinių sąrašas
  [„Tai“, „yra“, 4, 13327]

Python kalbos ypatybės
  - Sąlygos gali būti derinamos. 1 - Del operacija naudojama kintamiesiems ar masyvo elementams išvalyti.
  - „Python“ turi puikų sugebėjimą dirbti su sąrašais. Galite naudoti sąrašo struktūros deklaravimo operatorius. Operatoriui leidžiama nurodyti sąrašo elementus tam tikra seka, o jei leidžia pasirinkti elementus pagal sąlygą.

\u003e\u003e\u003e lst1 \u003d
  \u003e\u003e\u003e lst2 \u003d
  \u003e\u003e\u003e spausdinti

  \u003e\u003e\u003e spausdinti

  # „Bet kuris“ operatorius grąžina tiesą, jei bent jau
  # Ar būtų įvykdyta viena iš joje nurodytų sąlygų
  \u003e\u003e\u003e bet koks (i% 3 už i in)
  Tiesa
  # Ši procedūra skaičiuoja sumą
  # atitinkantys elementai sąraše
  \u003e\u003e\u003e suma (1 i, jei i \u003d\u003d 3)
3
  \u003e\u003e\u003e del lst1
  \u003e\u003e\u003e spausdinti lst1

  \u003e\u003e\u003e del lst1

Python siūlo pydoc kodo dokumentavimo mechanizmą. Pageidautina, kad kiekvienas modulis, klasė, funkcija ar metodas būtų su dokumentais

Python globalūs kintamieji yra deklaruojami už funkcijų ribų ir gali būti skaitomi be deklaracijų, tačiau jei reikia pakeisti globaliojo kintamojo reikšmę iš funkcijos, tai turite deklaruoti funkcijos pradžioje su raktiniu žodžiu globalus. Jei ši sąlyga neįvykdoma, „Python“ skelbia kintamąjį, kuris galimas tik šiai funkcijai.

skaičius \u003d 5

Def myfunc ():
  # Rezultatai 5
  spausdinimo numeris

Apibrėžti kitą funkciją ():
  # Tai išimtis, nes globalus kintamasis
  # nebuvo iškviestas iš funkcijos. Python tokiu atveju sukuria
  # to paties pavadinimo kintamasis šioje funkcijoje ir yra
  # tik šios funkcijos operatoriams.
  spausdinimo numeris
  skaičius \u003d 3

Apibrėžti dar kitą funkciją ():
  globalus skaičius
  # Ir tik nuo šios funkcijos kintamojo vertė pasikeičia
  skaičius \u003d 3

Natūralu, kad tai nėra visos „Python“ kalbos galimybės, tačiau aukščiau pateikto sąrašo visiškai pakanka norint išmokti kai kurias kalbos ypatybes.

Taip pat verta paminėti, kad „Python“ yra aktyviai naudojamas tokiose įmonėse kaip jau minėta. „Google“, NASA, „Yandex“, „Apple“, Kosminio teleskopo institutas ( STSCI), „Dreamworks“ nuotraukos. Korporacija „Apple“  kalendoriaus serveriui kurti naudoja „Python“ ir „Twisted“ „iCal“.

Nuo to momento mes pereisime prie Django, vieno iš populiariausių rėmų, parašytų šiandien tiesiai Python'e.

Python programavimo kalbos pagrindai per 10 minučių

(Vertimas)

„Poromenos daiktų“ tinklalapyje buvo paskelbtas straipsnis, kuriame glaustai pasakojama apie „Python“ kalbos pagrindus. Siūlau jums šio straipsnio vertimą. Vertimas nėra pažodžiui. Bandžiau išsamiau paaiškinti kai kuriuos dalykus, kurie gali būti neaiškūs.

Jei planuojate išmokti „Python“ kalbą, tačiau nerandate tinkamo vadovo, šis straipsnis jums bus labai naudingas! Per trumpą laiką galite išmokti „Python“ kalbos pagrindų. Nors šis straipsnis dažnai remiasi tuo, kad jūs jau turite programavimo patirties, tačiau tikiuosi, kad ši medžiaga bus naudinga net pradedantiesiems. Atidžiai perskaitykite kiekvieną pastraipą. Dėl medžiagos kompaktiškumo kai kurios temos nagrinėjamos paviršutiniškai, tačiau jose yra visa reikalinga medžiaga.

Pagrindinės savybės

Python nereikalauja aiškios kintamųjų deklaracijos, ji yra jautri didžiosiomis ir mažosiomis raidėmis (var nėra lygiavertė Var arba VAR yra trys skirtingi kintamieji) objekto kalba.

Sintaksė

Pirmiausia verta paminėti įdomią Python savybę. Jame nėra operatoriaus skliaustų (pradėti..atsiųsti paskaliu arba (..) C) blokai yra įbrėžti: tarpai arba kortelės, o įėjimą į teiginių bloką atlieka dvitaškis. Vienos eilutės komentarai prasideda svaro ženklu „#“, kelių eilučių komentarai prasideda ir baigiasi trimis dvigubomis kabutėmis „“ “.

Norint priskirti kintamajam reikšmę, naudojamas ženklas „\u003d“, o palyginimui - „\u003d\u003d“. Norint padidinti kintamojo vertę arba įtraukti į eilutę, naudojamas operatorius „+ \u003d“, o norint sumažinti - „- \u003d“. Visos šios operacijos gali sąveikauti su dauguma tipų, įskaitant stygas. Pavyzdžiui

\u003e\u003e\u003e myvaras \u003d 3

\u003e\u003e\u003e myvaras + \u003d 2

\u003e\u003e\u003e myvaras - \u003d 1

"" "Tai yra kelių eilučių komentaras

Trijų dvigubų kabučių uždarytos eilutės nepaisomos.

\u003e\u003e\u003e mystring \u003d "Sveiki"

\u003e\u003e\u003e paslaptingas + \u003d "pasaulis".

\u003e\u003e\u003e spausdinimo paslaptis

Sveikas pasaulis

# Kita eilutė pasikeičia

Kintamųjų reikšmės vietose. (Tik viena eilutė!)

\u003e\u003e\u003e myvaras, paslaptingas \u003d paslaptingas, myvaras

Duomenų struktūros

Python yra duomenų struktūros, tokios kaip   sąrašai, sąrašai ir žodynai) Sąrašai yra panašūs į vienos dimensijos masyvus (tačiau galite naudoti sąrašą su sąrašais - daugiamatį masyvą), sąrašuose - nekintančius sąrašus, žodynus - taip pat sąrašus, tačiau rodyklės gali būti bet kokio tipo, ne tik skaitinės. „Python“ masyvuose gali būti bet kokio tipo duomenų, tai yra, viename masyve gali būti skaičių, eilučių ir kitų duomenų tipai. Masyvai prasideda nuo indekso 0, o paskutinis elementas gali būti gaunamas indekse -1. Galite priskirti kintamiesiems funkcijas ir atitinkamai jas naudoti.

\u003e\u003e\u003e sample \u003d, ("a", "tuple")] # Sąrašą sudaro sveikas skaičius, kitas sąrašas ir tuple

\u003e\u003e\u003e mylist \u003d ["1 sąrašo elementas", 2, 3.14] # Šiame sąraše yra eilutė, sveikasis skaičius ir trupmeninis skaičius

\u003e\u003e\u003e mylist \u003d "Vėl išvardyti 1 elementą" # Pakeiskite pirmąjį (nulio) elementą mano sąrašo lape

\u003e\u003e\u003e mylist [-1] \u003d 3.14 # Pakeiskite paskutinį lapo elementą

\u003e\u003e\u003e mydict \u003d („1 raktas“: „1 reikšmė“, 2: 3, „pi“: 3,14) # Sukurkite žodyną su skaitiniais ir sveikaisiais indeksais

\u003e\u003e\u003e mydict ["pi"] \u003d 3.15 # Pakeisti žodyno elementą rodyklėje „pi“.

\u003e\u003e\u003e mytuple \u003d (1, 2, 3) # Nustatykite kartelę

\u003e\u003e\u003e myfunction \u003d len #Python leidžia deklaruoti funkcijos sinonimus

\u003e\u003e\u003e spausdinti mano funkciją (mano sąrašas)

Galite naudoti masyvo dalį nurodydami pirmąjį ir paskutinįjį rodyklę per dvitaškį „:“. Tokiu atveju gausite masyvo dalį, nuo pirmojo rodyklės iki antrojo, neįskaitant. Jei pirmasis elementas nenurodytas, skaičiavimas pradedamas nuo masyvo pradžios, o jei paskutinis nenurodomas, tada masyvas skaitomas iki paskutinio elemento. Neigiamos vertės lemia elemento padėtį nuo galo. Pvz .:

\u003e\u003e\u003e mylist \u003d [„1 sąrašo elementas“, 2, 3.14]

\u003e\u003e\u003e print mylist [:] # Visi masyvo elementai yra perskaityti

[„1 sąrašo punktas“, 2, 3.1400000000000001]

\u003e\u003e\u003e print mylist # Skaito nulinį ir pirmąjį masyvo elementus.

[„1 sąrašo punktas“, 2]

\u003e\u003e\u003e spausdinti mano sąrašą [-3: -1] # Elementai skaitomi nuo nulio (-3) iki sekundės (-1) (neįskaičiuota)

[„1 sąrašo punktas“, 2]

\u003e\u003e\u003e spausdinti mano sąrašą # Skaitykite elementus nuo pirmo iki paskutinio

Linijos

Python stygos yra uždaromos dvigubomis kabutėmis dvigubomis "" "arba viena" "" ". Dvigubose kabutėse gali būti pavienių arba atvirkščiai. Pvz., Eilutė „Jis pasakė labas!“ Bus rodoma ekrane kaip „Jis sakė labas!“. Jei jums reikia naudoti kelių eilučių eilutę, šią eilutę turite pradėti ir baigti trimis dvigubomis kabutėmis "" ". Galite pakeisti eilutės ar žodyno elementus į eilutės šabloną. Procento ženklas"% "tarp eilutės ir žodyno pakeičia eilutės simbolius. „% S" ant sudurtinio elemento. Žodynai leidžia įterpti elementą į nurodytą rodyklę į eilutę. Norėdami tai padaryti, eilutėje naudokite konstrukciją „% (index) s". Šiuo atveju vietoj „% (index) s" žodyno reikšmė bus pakeista nurodytoje vietoje. rodyklė.

\u003e\u003e\u003e spausdinti "Vardas:% s \\ nSkaičius:% s \\ nSring:% s"% (myclass.name, 3, 3 * "-")

Vardas: Poromenos

Skaičius: 3

Styga: ---

strString \u003d "" "Šis tekstas yra

keliose eilutėse "" "

\u003e\u003e\u003e spausdinti "Šis% (veiksmažodis) a% (daiktavardis) s." % („daiktavardis“: „test“, „veiksmažodis“: „yra“)

Tai yra testas.

Operatoriai

Tuo tarpu teiginių formuluotės sudaro judėjimo teiginius. Pasirinkto teiginio analogo nėra, todėl jūs turite padaryti, jei. Pareiškime lyginama kintamasis ir sąrašas. Norėdami gauti skaitmenų sąrašą prieš skaičių   - naudoti diapazono funkciją ( ) Štai pavyzdys, naudojantis operatoriais

rangelist \u003d range (10) # Gaukite dešimties skaitmenų sąrašą (nuo 0 iki 9)

\u003e\u003e\u003e spausdinimo rangelistas

numeriui rangelist: # Nors kintamasis skaičius (kuris kaskart didėja po vieną) yra sąraše ...

  # Patikrinkite, ar kintamasis įtrauktas

  # skaičiai iš daugybės skaičių (3, 4, 7, 9)

Jei skaičius (3, 4, 7, 9): # Jei skaičiaus kintamasis yra skyriuje (3, 4, 7, 9) ...

  # Operacija „pertrauka“ numatyta

  # bet kuriuo metu išeikite iš linijos

Pertrauka

Kita:

  # „Tęsti“ slenka

  # ciklas. Čia to nereikia, nes po šios operacijos

  # bet kokiu atveju programa grįžta prie ciklo apdorojimo

Tęskite

dar:

  # „Else“ neprivaloma. Sąlyga įvykdyta

  # jei kilpa nebuvo nutraukta su pertrauka.

Pass # Nieko nedaryti

jei rangelistas \u003d\u003d 2:

Spausdinti „Antrasis elementas (sąrašai pagrįsti 0) yra 2“

elif rangelist \u003d\u003d 3:

Spausdinti „Antrasis elementas (sąrašai pagrįsti 0) yra 3“

dar:

Spausdinti „Dunno“

o rangelistas \u003d\u003d 1:

Praeiti

Funkcijos

Norėdami deklaruoti funkciją, naudokite raktinis žodis def. Funkcijos argumentai pateikiami skliausteliuose po funkcijos pavadinimo. Galite nurodyti pasirenkamus argumentus, suteikdami jiems numatytąją reikšmę. Funkcijos gali grąžinti raides, tokiu atveju grąžintas reikšmes reikia rašyti atskirtas kableliais. Pradinėms funkcijoms deklaruoti naudojamas raktinis žodis „lambda“.

# arg2 ir arg3 yra pasirenkami argumentai, paimkite reikšmę, paskelbtą pagal numatytuosius nustatymus,

#, jei skambinant funkcijai nenustatysite kitokios vertės.

def funkcijos sutrikimas (arg1, arg2 \u003d 100, arg3 \u003d "testas"):

Grįžti arg3, arg2, arg1

# Funkcija iškviečiama su pirmojo argumento reikšme - „1 argumentas“, antrasis - pagal numatytuosius nustatymus, o trečiojo - „Pavadintas argumentas“.

\u003e\u003e\u003e ret1, ret2, ret3 \u003d mano funkcija („Argumentas 1“, arg3 \u003d „Pavadintas argumentas“)

# ret1, ret2 ir ret3 yra atitinkamai „Pavadintas argumentas“, 100, „Argumentas 1“

\u003e\u003e\u003e spausdinti ret1, ret2, ret3

Pavadintas 100 argumentas 1 argumentas

# Šis įrašas atitinka def f (x): grįžti x + 1

functionvar \u003d lambda x: x + 1

\u003e\u003e\u003e spausdinimo funkcijos variantas (1)

Klasės

Python apsiriboja daugybiniu paveldėjimu klasėse. Vidiniai kintamieji ir vidiniai klasės metodai prasideda dviem brūkšniais „__“ (pavyzdžiui, „__myprivatevar“). Mes taip pat galime priskirti klasės kintamajam vertę iš išorės. Pavyzdys:

klasės „Myclass“:

Dažnas \u003d 10

Def __init __ (savarankiškai):

Savęs kintamasis \u003d 3

Apibrėžta mano funkcija (savaime, arg1, arg2):

Grįžti savarankiškai

  # Čia paskelbėme klasę „Myclass“. Inicijuojant klases, funkcija __init__ iškviečiama automatiškai.

\u003e\u003e\u003e classinstance \u003d Myclass () # Inicijavome klasę ir kintamasis myvariable įgijo 3 vertę, kaip nurodyta inicializacijos metode

\u003e\u003e\u003e classinstance.myfunction (1, 2) # Myclass klasės myfunction metodas grąžina kintamojo kintamojo reikšmę.

# Bendras kintamasis deklaruojamas visose klasėse

\u003e\u003e\u003e classinstance2 \u003d Myclass ()

\u003e\u003e\u003e classinstance.common

10

\u003e\u003e\u003e classinstance2.common

10

# Todėl, jei pakeisime jo vertę „Myclass“ klasėje, pasikeis

# ir jo vertės objektuose, kuriuos inicijavo „Myclass“ klasė

\u003e\u003e\u003e Myclass.common \u003d 30

\u003e\u003e\u003e classinstance.common

30

\u003e\u003e\u003e classinstance2.common

30

# Ir čia mes nekeičiame klasės kintamojo. Vietoj to

# deklaruojame jį objekte ir priskiriame jam naują vertę

\u003e\u003e\u003e classinstance.common \u003d 10

\u003e\u003e\u003e classinstance.common

10

\u003e\u003e\u003e classinstance2.common

30

\u003e\u003e\u003e Myclass.common \u003d 50

# Dabar klasės kintamojo pakeitimas neturės įtakos

# kintami šios klasės objektai

\u003e\u003e\u003e classinstance.common

10

\u003e\u003e\u003e classinstance2.common

50

# Kita klasė yra „Myclass“ klasės paveldėtoja

# paveldi savo savybes ir metodus, kuriais klasė gali

# paveldėtas iš kelių klasių, šiuo atveju - įrašas

# tokia: klasė Kita klasė („Myclass1“, „Myclass2“, „MyclassN“)

klasė Kita klasė (Myclass):

Def __init __ (savęs, arg1):

Savęs kintamasis \u003d 3

Spausdinti arg1

\u003e\u003e\u003e classinstance \u003d Kita klasė („labas“)

labas

\u003e\u003e\u003e classinstance.manfunkcija (1, 2)

# Ši klasė neturi testo, bet mes galime

# deklaruoja tokį objekto kintamąjį. Be to

#šis kintamasis priklausys tik klasei.

\u003e\u003e\u003e classinstance.test \u003d 10

\u003e\u003e\u003e classinstance.test

10

Išimtys

„Python“ išimčių struktūra yra „pabandykite, išskyrus“:

def somefunction ():

Pabandykite:

  # Padalijimas iš nulio sukelia klaidą

10 / 0

Išskyrus „ZeroDivisionError“:

  # Bet programa nėra „Netinkamos operacijos atlikimas“

  # Ir apdoroja išimties bloką, atitinkantį klaidą „ZeroDivisionError“

Spausdinkite „Oi, netinkama“.

\u003e\u003e\u003e fnexcept ()

Oi, neteisinga.

Importuoti

Išorines bibliotekas galima prijungti naudojant „importavimo“ procedūrą, kur nurodomas prijungtinos bibliotekos pavadinimas. Taip pat galite naudoti komandą „nuo importo“, kad galėtumėte naudoti funkciją iš bibliotekos:

importuoti atsitiktinai # Importuoti biblioteką „atsitiktinai“

nuo laiko importuoti laikrodį # Ir tuo pačiu metu funkcija „laikrodis“ iš bibliotekos „laikas“

randomint \u003d random.randint (1, 100)

\u003e\u003e\u003e atspausdinti randomint

64

Darbas su failų sistema

Python turi daugybę integruotų bibliotekų. Šiame pavyzdyje mes bandysime išsaugoti sąrašo struktūrą dvejetainiame faile, perskaityti jį ir išsaugoti eilutę tekstiniame faile. Norėdami pakeisti duomenų struktūrą, naudosime standartinę marinuotų medžiagų biblioteką:

importuoti marinatą

mylist \u003d [„This“, „is“, 4, 13327]

# Norėdami rašyti, atidarykite failą C: \\ binary.dat. Simbolis „r“

# neleidžia pakeisti specialių simbolių (tokių kaip \\ n, \\ t, \\ b ir tt).

myfile \u003d failas (r „C: \\ binary.dat“, „w“)

pickle.dump (mano sąrašas, mano failas)

myfile.close ()

myfile \u003d failas (r „C: \\ text.txt“, „w“)

myfile.write („Tai yra pavyzdinė eilutė“)

myfile.close ()

myfile \u003d failas (r „C: \\ text.txt“)

\u003e\u003e\u003e atsispausdinti „myfile.read“ ()

"Tai yra pavyzdinė eilutė"

myfile.close ()

# Atidarykite failą skaitymui

myfile \u003d failas (r „C: \\ binary.dat“)

loadinglist \u003d marinatas.krauti („myfile“)

myfile.close ()

\u003e\u003e\u003e atspausdintų krovinių sąrašas

[„Tai“, „yra“, 4, 13327]

Savybės

  • Sąlygos gali būti derinamos. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Naudokite del operaciją aiškūs kintamieji ar masyvo elementai.
  • Python siūlo puikias galimybes darbas su sąrašais. Galite naudoti sąrašo struktūros deklaravimo operatorius. Operatoriui leidžiama nurodyti sąrašo elementus tam tikra seka, o jei leidžia pasirinkti elementus pagal sąlygą.

\u003e\u003e\u003e lst1 \u003d

\u003e\u003e\u003e lst2 \u003d

\u003e\u003e\u003e spausdinti

\u003e\u003e\u003e spausdinti

# „Bet kuris“ operatorius grąžina tiesą, jei bent jau

# būtų įvykdyta viena iš joje nurodytų sąlygų.

\u003e\u003e\u003e bet koks (i% 3 už i in)

Tiesa

# Ši procedūra skaičiuoja sumą

# atitikimo elementai sąraše

\u003e\u003e\u003e suma (1 i, jei i \u003d\u003d 3)

\u003e\u003e\u003e del lst1

\u003e\u003e\u003e spausdinti lst1

\u003e\u003e\u003e del lst1

  • Visuotiniai kintamiejipaskelbta neveikiančia ir gali būti perskaityta be jokių pranešimų. Bet jei jums reikia pakeisti globaliojo kintamojo vertę iš funkcijos, tada ją turite deklaruoti funkcijos pradžioje su raktiniu žodžiu „global“, jei to nepadarysite, tada „Python“ deklaruos kintamąjį, galimą tik šiai funkcijai.

skaičius \u003d 5

def myfunc ():

  # Rezultatai 5

Spaudos numeris

def elsefunc ():

  # Tai išimtis, nes globalus kintamasis

  # nebuvo iškviestas iš funkcijos. Python tokiu atveju sukuria

  # to paties pavadinimo kintamasis šioje funkcijoje ir yra

  # tik šios funkcijos operatoriams.

Spaudos numeris

Skaičius \u003d 3

def yetanotherfunc ():

Visuotinis skaičius

  # Ir tik nuo šios funkcijos kintamojo vertė pasikeičia.

Skaičius \u003d 3

Epilogas

Žinoma, šiame straipsnyje nėra aprašytos visos „Python“ savybės. Tikiuosi, kad šis straipsnis jums padės, jei norite toliau mokytis šios programavimo kalbos.

„Python“ nauda

  • „Python“ parašytų programų vykdymo greitis yra labai didelis. Taip yra todėl, kad pagrindinės Python bibliotekos
    parašyta C ++ ir užduoties vykdymas užima mažiau laiko nei kitos aukšto lygio kalbos.
  • Šiuo atžvilgiu galite parašyti savo „Python“ modulius C arba C ++
  • Standartinėse Python bibliotekose galite rasti įrankius darbui su el. Laiškais, protokolais
    Internetas, FTP, HTTP, duomenų bazės ir kt.
  • Scenarijai, parašyti naudojant „Python“, veikia daugelyje šiuolaikinių operacinių sistemų. Toks perkeliamumas suteikia Python programas įvairiose srityse.
  • Python tinka bet kokiam programavimo sprendimui, nesvarbu, ar tai būtų biuro programinė įranga, interneto programos, GUI programos ir kt.
  • Tūkstančiai entuziastų iš viso pasaulio dirbo kurdami „Python“. Palaikydami šiuolaikines technologijas standartinėse bibliotekose, galime būti įpareigoti to, kad „Python“ buvo atviras visiems atėjusiems.

Galite pradėti rašyti savo programą, tačiau neturėtumėte tikėtis iš jos kažkokio grandiozinio ir antgamtinio, būkime realistai. Jūs ir aš dar turime nuveikti, ir yra daug informacijos, kurią reikėtų išstudijuoti.

Šioje pamokoje norėčiau išanalizuoti pagrindinius dalykus ir tai, kas tiksliai yra sukurta python programa.

Python instrukcijos  - Tai yra eilutės po eilės kodas, kuris savo ruožtu turi seką ir yra sukurtas jūsų algoritmo. Pagrindinis python uždavinys yra interpretuoti jūsų nurodytą kodą reikiama tvarka. Šis atgaminimas programuojant yra vadinamas procedūriniu, t. Y. Nuosekliu.

Internete ir įvairiuose programavimo forumuose galite išgirsti vardą Python scenarijai, taigi pažiūrėkime, ką tai reiškia. Ši išraiška naudojama kodui, parašytam į vieną failą, neskirstant į modulius. Pažymėtina, kad Python yra scenarijų kalba  programavimas.

Python scenarijaus rašymas

Šiandien daugelio pasaulio šalių ekonomikai atėjo sunkūs laikai, todėl siūlau sukurti scenarijų, kurie gali lengvai nustatyti bet kurios pasaulio šalies ekonomikos būklę. Sukūrę scenarijų, atlikdami keletą paprastų žingsnių, galime stebėti dolerio ir bet kurios kitos valiutos santykį. Jei pastebėsite reikšmingą skirtumą nuo realybės, tada šalis nugrimzta į spekuliantus, arba skaičiavimo duomenys nėra svarbūs.

Algoritmas bus apskaičiuojamas naudojant paprastą finansinę formulę:
   M2 (pinigų suma) / aukso atsargos (šalies aukso ir užsienio valiutos atsargos JAV doleriais) \u003d? (realus kursas į USD)

Mūsų scenarijus:

Python

# instrukcija, kurioje saugome skaičiavimo formulę def get_data (m2, zvr, norma): grąža (m2 / norma / zvr) * norma # gauna duomenis iš vartotojo m2 \u003d plūdė (įvestis („Įveskite dabartinį M2 rodiklį šalyje:“)) zvr \u003d kintama (įvestis („Įveskite dabartinį aukso ir užsienio valiutos indeksą šalies ekvivalentu $“:)) kursas \u003d kintama (įvestis („Įveskite, kiek 1 USD yra šalies valiuta:“)) # paskambinkite skaičiavimo formulę pakeisdami įvestą duomenų spausdinimą (get_data (m2) , zvr, kursas))

# instrukcija, kurioje saugome skaičiavimo formulę

def get_data (m2, zvr, kursas):

grąža (m2 / norma / zvr) * norma

# mes priimame duomenis iš vartotojo

m2 \u003d plūdė (įvestis ( "Įveskite dabartinį M2 šalyje:") )

zvr \u003d plūdė (įvestis ( "Įveskite dabartinį aukso ir užsienio valiutos atsargų indeksą šalyje, atitinkančią USD:") )

norma \u003d plūdė (įvestis ( "Įveskite, kiek jis kainuoja 1 USD šalies valiuta:") )

# paskambinkite skaičiavimo formulę pakeisdami įvestus duomenis

spausdinti (gauti_duomenus (m2, zvr, kursas))

Kaip matome, visas kodas yra įdėtas į vieną failą, kuriame yra skaičiavimo formulė, duomenų gavimas iš vartotojo ir rezultatas išvedamas spausdinant (). Šis failas su visišku pasitikėjimu gali būti vadinamas scenarijumi. Žinoma, jūs jau pamiršote, kam skirtas straipsnis, tačiau jums nereikia jaudintis, praktiškai viskas yra labai aišku, jums reikia pabandyti tik vieną kartą.

Mes sudarome programą iš scenarijaus

Taigi atėjo laikas įdomiausiems. Kaip minėta aukščiau, programą sudaro moduliai , o jis, savo ruožtu, yra atskiras failas su instrukcijų rinkiniu.

Pvz., Sukurkite formula.py failą ir parašykite:

Python

# instrukcija, kurioje mes saugome skaičiavimo formulę def get_data (data): return (data ["m2"] / data ["rate"] / data ["zvr"]) * data ["rate"]

Absoliučiai bet kuri programa turi įvesties failą. Tai yra pagrindinis failas, kuris paprastai vadinamas arr.ru. Būtent jame bus prijungti papildomi moduliai ir užprogramuotas pačios programos algoritmas. Turite jį sukurti ir parašyti kodą:

Python

# - * - kodavimas: utf-8 - * - # importo formulės modulio jungimas # funkcija su instrukcijomis, kaip gauti duomenis def input_data (data): data ["currency"] \u003d input ("Įveskite šalies valiutos pavadinimą:") duomenys [" m2 "] \u003d plūdės (įvestis (" Įveskite dabartinį M2 rodiklį šalyje: ")) duomenys [" zvr "] \u003d plūdinis (įvestis (" Įveskite dabartinį aukso atsargų rodiklį šalyje $ ekvivalentas: ")) duomenys [" kursas]] \u003d float (įvestis („Įveskite, kiek kainuoja 1 JAV doleris šalies valiuta:“)) grąžina duomenis # su instrukcijomis, kaip gauti rezultatą naudojant modulio formulę def out_data (duomenys): spausdinti („M2 \u003d“, duomenys [„m2“], „aukso atsargos“) \u003d ", duomenys [" zvr "]," 1 $ \u003d ", duomenys [" norma "]) spausdinti (" Pagal įvestus rodiklius norma šalyje turėtų būti 1 $ \u003d ", formula.get_data (duomenys), duomenys [" valiuta "]) # funkcija kodo def main () vykdymo pasekmių algoritmas: # numatytieji duomenų duomenys \u003d („m2“: 0, „zvr“: 0, „sparta“: 0) # užklausa iš vartotojo duomenų duomenys \u003d įvesties_duomenys (duomenys) # perduoda gautus duomenis į „out_data“ (duomenų) suskaičiavimas ir iš karto sudarymas # Programos pradžia - mes perduodame valdymą pagrindinei funkcijai, jei __name__ \u003d\u003d „__main__“: main ()

# - * - kodavimas: utf-8 - * -

# modulio jungtis

importo formulė

# funkcija su duomenų priėmimo instrukcijomis

def input_data (duomenys):

Paprastai programavimo knygos prasideda nuo daugybės nuobodžių skyrių apie pagrindinius dalykus ir pamažu pradeda kurti ką nors naudingo. Praleiskime visa tai. Čia yra parengta darbo programa „Python“. Galbūt jūs visiškai nieko nesuprantate. Nesijaudinkite dėl to, netrukus mes rūšiuosime tai pagal eilutes. Bet pirmiausia perskaitykite kodą ir sužinokite, ką galite iš jo išgauti.

SUFFIXES \u003d (1000: [„KB“, „MB“, „GB“, „TB“, „PB“, „EB“, „ZB“, „YB“],
1024: [„KiB“, „MiB“, „GiB“, „TiB“, „PiB“, „EiB“, „ZiB“, „YiB“])


Pagrindiniai argumentai:

"""
jei dydis< 0 :
kelti „ValueError“ ()


sufiksui SUFFIXES [kelis]:
   dydis / \u003d daugybė
jei dydis< multiple:

kelti „ValueError“ ( "skaičius per didelis")

jei __name__ \u003d\u003d "__main__":

Dabar paleiskime šią programą iš komandinė eilutė. „Windows“ sistemoje tai atrodys maždaug taip:

c: \\ home \\ diveintopython3 \\ pavyzdžiai\u003e c: \\ python31 \\ python.exe humanize.py
  1,0 TB
  931,3 GiB

„Mac OS X“ ir „Linux“ bus beveik tas pats:

jūs @ localhost: ~ / diveintopython3 / pavyzdžiai $ python3 humanize.py
  1,0 TB
  931,3 GiB

Kas atsitiko dabar? Baigėte savo pirmąją „Python“ programą. Pakvietėte „Python“ vertėją komandinėje eilutėje ir perdavote scenarijaus, kurį norite vykdyti, pavadinimą. Scenarijus apibrėžia funkciją apytikslis_ dydis () , kuris paima tikslų failo dydį baitais ir apskaičiuoja „gražų“ (bet apytikslį) dydį. (Galbūt tai matėte „Windows Explorer“, „Mac OS X Finder“, „Nautilus“, „Dolphin“ ar „Thunar“ sistemoje „Linux“. Jei lentelėje rodysite dokumentų aplanką, failų tvarkyklė parodys piktogramą, dokumento pavadinimą, dydį, tipą paskutinio pakeitimo data ir tt Jei aplanke yra 1093 baitų failas pavadinimu „TODO“, failų tvarkyklė nerodys „TODO 1093 baitų“, vietoj to jis pasakys kažką panašaus į „TODO 1 KB“. Būtent tai jis ir daro funkcija apytikslis_ dydis () .)

Pažvelkite į paskutines scenarijaus eilutes, pamatysite du skambučius spausdinti (apytikslis_ dydis (argumentai)). Tai yra funkcijų skambučiai. Apytikslis_ dydis vadinamas pirmuoju () , kuriam perduodami keli argumentai, tada jo grąžinta vertė imama ir perduodama tiesiai į funkciją spausdinti (). Funkcija spausdinti ()  įmontuota, niekur nerasite aiškios jo deklaracijos. Jis gali būti naudojamas tik bet kur ir bet kada. (Yra daugybė integruotų funkcijų ir dar daugiau funkcijų, kurios paskirstomos atskirai moduliai. Kantrybė, fidget.)

Taigi, kodėl scenarijaus vykdymas komandinėje eilutėje visada duoda tą patį rezultatą? Mes pateksime į tai. Bet pirmiausia pažvelkime į apytikslį_ dydį () .

Funkcijos deklaracija

„Python“ turi funkcijas, kaip ir daugeliu kitų kalbų, tačiau nėra atskirų antraštės failų, kaip „C ++“, ir sąsajos / įgyvendinimo konstrukcijų, kaip „Pascal“. Kai jums reikia funkcijos, tiesiog paskelbkite ją, pavyzdžiui, taip:

def approximate_size (dydis, a_kilobyte_is_1024_bytes \u003d True):

Kai jums reikia funkcijos, tiesiog paskelbkite ją.

Skelbimas prasideda raktiniu žodžiu def, po kurio nurodomas funkcijos pavadinimas, po skliausteliuose pateikiami argumentai. Jei yra keli argumentai, jie atskiriami kableliais.

Be to, verta paminėti, kad grąžinamų duomenų tipas nenurodytas funkcijos deklaracijoje. „Python“ funkcijos nenustato jų grąžinamų verčių tipo; jie net nenurodo, ar grąžinimo vertė išvis egzistuoja. (Tiesą sakant, bet kuri „Python“ funkcija grąžina vertę; jei funkcija vykdo nurodymą grįžti, ji grąžina šioje instrukcijoje nurodytą vertę, jei ne, grąžina Nėra  - specialioji nulinė vertė.)

Funkcija apytiksliai ()   trunka du argumentus: dydis ir kilobaitas_is_1024_baitai, bet nė vienas iš jų neturi tipo. „Python“ sistemoje kintamųjų tipas niekada nėra aiškiai nustatytas. Python apskaičiuoja kintamojo tipą ir stebi jį savarankiškai.

Neprivalomi ir įvardyti argumentai

Python programoje funkcijos argumentai gali turėti numatytąsias reikšmes; jei funkcija iškviečiama be argumento, ji imasi numatytosios vertės. Be to, argumentus galima nurodyti bet kokia tvarka nurodant jų pavadinimus.

Pažvelkime dar kartą į funkcijos deklaraciją approximate_size () :

def approximate_size (dydis, a_kilobyte_is_1024_bytes \u003d True):

Antrasis argumentas - a_kilobyte_is_1024_bytes - parašytas pagal numatytąją reikšmę Tiesa. Tai reiškia, kad šis argumentas yra neprivalomas; galite paskambinti funkcijai be jos, ir Python veiks taip, lyg būtų vadinama Tiesa  kaip antrasis parametras.

Dabar pažvelk į paskutines scenarijaus eilutes:

jei __name__ \u003d\u003d "__main__":
spausdinti (apytikslis_ dydis (1000000000000, klaidingas)) ①
spausdinti (apytikslis_ dydis (1000000000000)) ②

Funkcijai reikšmes taip pat galite perduoti pagal pavadinimą.

\u003e\u003e\u003e iš žmonių importo apytikslį_ dydį
  \u003e\u003e\u003e apytikslis_ dydis (4000, a_kilobyte_is_1024_bytes \u003d klaidingas) ①
  „4,0 KB“
  \u003e\u003e\u003e apytikslis_ dydis (dydis \u003d 4000, a_kilobyte_is_1024_bytes \u003d klaidingas) ②
  „4,0 KB“
  \u003e\u003e\u003e apytikslis_ dydis (a_kilobyte_is_1024_bytes \u003d klaidingas, dydis \u003d 4000) ③
  „4,0 KB“
  \u003e\u003e\u003e apytikslis_ dydis (a_kilobyte_is_1024_bytes \u003d klaidingas, 4000) ④
   Failas “ “, 1 eilutė
  \u003e\u003e\u003e apytikslis_ dydis (dydis \u003d 4000, klaidingas) ⑤
   Failas “ “, 1 eilutė
  „SyntaxError“: ne raktinis žodis arg po raktinio žodžio arg

Vertimo apvalkalo žinutės:   Failas “ 1 eilutės „SyntaxError“: bevardis argumentas pavadintas

Funkcija apytiksliai ()   vadinama vertybe 4000   pirmajame argumente ir Melagingas  argumentu pavadinimu a_kilobyte_is_1024_bytes. (Jis yra antroje vietoje, bet tai nesvarbu, kaip netrukus pamatysite.)
Funkcija apytiksliai ()   vadinama vertybe 4000   argumentu pavadinimu dydis ir Melagingas  argumentu pavadinimu a_kilobyte_is_1024_bytes. (Šie įvardyti argumentai yra ta pačia tvarka, kaip ir išvardyti funkcijos deklaracijoje, tačiau tai taip pat nesvarbu.)
Funkcija apytiksliai ()   paskambino su Melagingas  argumentu pavadinimu a_kilobyte_is_1024_bytes ir 4000   argumentu pavadinimu dydis. (Matote? Aš sakiau, kad tvarka nėra svarbi.)
Šis skambutis neveikia, nes po pavadinto argumento eina bevardis (pozicinis) argumentas. Jei skaitote argumentų sąrašą iš kairės į dešinę, tada, kai tik atsiranda nurodytas argumentas, turi būti įvardyti ir visi po jo esantys argumentai.
Šis skambutis taip pat neveikia dėl tos pačios priežasties, kaip ir ankstesnė. Nuostabi Galų gale pirmiausia perduodama 4000   argumentu, vadinamu dydžiu, tada „akivaizdžiai“ galite tikėtis Melagingas  taps argumentu pavadinimu a_kilobyte_is_1024_bytes. Bet „Python“ sistemoje tai neveikia. Kadangi yra įvardytas argumentas, taip pat turi būti įvardyti visi jo dešinėje esantys argumentai.

Rašomas skaitomas kodas

Aš neplėšiu pirštų priešais tave ir kankinsiu tave su ilga paskaita apie kodo dokumentavimo svarbą. Tiesiog žinokite, kad kodas yra parašytas vieną kartą, ir perskaitykite kelis kartus, o svarbiausias jūsų skaitytojas yra jūs pats, praėjus šešiems mėnesiams po rašymo (tai yra, viskas jau pamiršta ir staiga kažkas turi būti pataisyta). Python'e skaityti kodą yra paprasta. Pasinaudokite tuo ir per šešis mėnesius pasakysite man „ačiū“.

Dokumentacijos eilutės

„Python“ funkcijas galima dokumentuoti pateikiant jas su dokumentacijos eilutėmis (angliška dokumentacijos eilutė, sutrumpinta doktrina). Mūsų programoje funkcija approximate_size ()   yra dokumentacijos eilutė:

def approximate_size (dydis, a_kilobyte_is_1024_bytes \u003d True):
"" "Konvertuoja failo dydį į žmonėms suprantamą formą.

Pagrindiniai argumentai:
   dydis - failo dydis baitais
   a_kilobyte_is_1024_bytes - jei True (numatytasis), naudojamos 1024 galios
   jei klaidinga, naudojami 1000 laipsnių vertės

Grąžina: teksto eilutė (eilutė)

Kiekviena savybė nusipelno geros dokumentacijos.

Trigubos kabutės naudojamos eilutėms, kuriose yra daugia eilutės tekstas, nurodyti. Viskas tarp pradžios ir pabaigos kabučių yra vienos duomenų eilutės dalis, įskaitant eilučių tiekimus, tarpus kiekvienos teksto eilutės pradžioje ir kitas citatas. Galite juos naudoti bet kur, tačiau dažniausiai juos matysite apibrėždami dokumentų eilutes.

Viskas, kas rašoma kabutėse, yra funkcijos dokumentacijos eilutė, apibūdinanti, ką ši funkcija daro. Dokumentacijos eilutė, jei jos yra, turėtų pradėti funkcijos pagrindą, tai yra, ji yra kitoje eilutėje iškart po funkcijos deklaracijos. Griežtai tariant, neprivalote rašyti kiekvienos savo funkcijos dokumentų, tačiau visada patartina tai padaryti. Aš žinau, kad visos jūsų ausys jau sufleruoja dėl kodo dokumentavimo, tačiau „Python“ suteikia jums papildomą paskatą - dokumento eilutės yra prieinamos vykdant laiką kaip funkcijos atributas.

Importuoti teiginių paieškos kelią

Prieš pradėdamas judėti, noriu trumpai pakalbėti apie bibliotekų paieškos būdus. Kai bandote importuoti modulį (naudodamiesi operatoriumi importuoti), „Python“ jo ieško keliose vietose. Visų pirma, jis ieško visų katalogų, išvardytų sys .path. Tai tik sąrašas, kurį galima lengvai peržiūrėti ir modifikuoti naudojant standartinius sąrašo metodus. (Sužinosite daugiau apie sąrašus skyriuje. Integruoti duomenų tipai.)

\u003e\u003e\u003e importo sistema ①
\u003e\u003e\u003e sys .path ②
[ "" ,
„/usr/lib/python31.zip“,
„/usr/lib/python3.1“,
,
,
,
]
\u003e\u003e\u003e sys ③
< module "sys" (built-in ) >
\u003e\u003e\u003e sys .path .įterpti (0,) ④
\u003e\u003e\u003e sys .path ⑤
[ „/ namai / ženklas / diveintopython3 / pavyzdžiai“,
"" ,
„/usr/lib/python31.zip“,
„/usr/lib/python3.1“,
"/usr/lib/python3.1/plat-linux2@EXTRAMACHDEPPATH@",
„/usr/lib/python3.1/lib-dynload“,
„/usr/lib/python3.1/dist-packages“,
„/usr/local/lib/python3.1/dist-packages“]

Importo modulis sys  suteikia visas funkcijas ir atributus.
sys .path  - katalogų pavadinimų sąrašas, apibrėžiantis dabartinį paieškos kelią. (Jūsų atrodys kitaip, atsižvelgiant į jūsų operacinę sistemą, naudojamą „Python“ versiją ir ten, kur ji buvo įdiegta.) „Python“ šiuose kataloguose (nurodyta tvarka) ieškos failo su plėtiniu „.py“, kurio vardas sutampa. ką bandai importuoti.
Tiesą sakant, aš jus apgavau; tikroji padėtis yra šiek tiek sudėtingesnė, nes ne visi moduliai yra failuose, kurių plėtinys yra „.py“. Kai kurie iš jų, pavyzdžiui, modulis sysyra įmontuoti; jie sudedami į patį Python'ą. Integruoti moduliai elgiasi lygiai taip pat, kaip ir įprasti moduliai, tačiau jų šaltinio kodo nėra, nes jie nebuvo parašyti Python'e! (Modulis sys  parašyta C.)
Į paieškos kelią galite įtraukti naują katalogą, pridėdami katalogo pavadinimą prie sąrašo sys .pathPython veikimo metu, tada Python žiūrės į jį kartu su kitais, kai tik bandysite importuoti modulį. Naujas paieškos kelias galios visą „Python“ seansą.
Vykdo komandą „sys .path .insert“ (0, „newpath“), į pirmą vietą sąraše įterpėte naują katalogą sys .path, taigi, iki modulių paieškos pradžios. Beveik visada to reikia. Pavadinimų konflikto atveju (pavyzdžiui, jei „Python“ yra kartu su antrąja kai kurios bibliotekos versija, o jūs norite naudoti 3 versiją), ši technika užtikrina, kad jūsų moduliai bus rasti ir naudojami, o ne tie, kurie pateikiami kartu su „Python“.

Viskas yra objektas

Jei staiga praleidote, aš tiesiog pasakiau, kad „Python“ funkcijos turi atributus ir šie atributai galimi vykdant. Funkcija, kaip ir visa kita Python programoje, yra objektas.

Paleiskite interaktyvųjį „Python“ apvalkalą ir pakartokite po manęs:

\u003e\u003e\u003e importuoti humanize ①
\u003e\u003e\u003e spausdinti (žmonių dydis.apytiksliai_ dydis (4096, tiesa)) ②
4,0 KiB
\u003e\u003e\u003e spausdinti (žmonių dydis.apytiksliai_sudaryti .__ doc__) ③
  Konvertuoja failo dydį į žmonėms suprantamą formą.

Pagrindiniai argumentai:
   dydis - failo dydis baitais
   a_kilobyte_is_1024_bytes - jei True (numatytasis), naudojamos 1024 galios
   jei klaidinga, naudojami 1000 laipsnių vertės

Grąžina: teksto eilutė (eilutė)

Pirmoje eilutėje importuojamas programa „humanize“ kaip modulis - kodo dalis, kurią galima naudoti interaktyviai arba iš kitos „Python“ programos. Po modulio importavimo galite pasiekti visas jo viešąsias funkcijas, klases ir atributus. Importavimas naudojamas tiek moduliuose, norint pasiekti kitų modulių funkcionalumą, tiek interaktyviame „Python“ apvalkale. Tai labai svarbi mintis, su kuria jūs dar ne kartą susipažinsite šios knygos puslapiuose.
Kai norite naudoti importuotame modulyje apibrėžtą funkciją, prie jo pavadinimo turite pridėti modulio pavadinimą. Tai yra, jūs negalite naudoti tik apytikslio_ dydžio, būtinai žmonių dydis.apytiksliai_ dydis. Jei naudojote „Java“ klases, tada tai turėtų būti jums žinoma.
Užuot paskambinę funkcijai (kaip ir galite tikėtis), paprašėte vieno iš jos atributų - __doc__.

Kas yra objektas?

Python'e viskas yra objektas, o bet kuris objektas gali turėti atributus ir metodus. Visos funkcijos turi standartinį atributą __doc__, kuriame yra dokumento eilutė, apibrėžta funkcijos šaltinio kode. Modulis sys  taip pat yra objektas, turintis (be kita ko) požymį, vadinamą keliu. Ir taip toliau.

Bet vis tiek negavome atsakymo į pagrindinį klausimą: kas yra objektas? Skirtingos programavimo kalbos skirtingai apibūdina „objektą“. Kai kuriose vietose manoma, kad visi objektai turi turėti atributus ir metodus. Kitose vietose tie objektai gali sukelti poklasius. „Python“ apibrėžimas dar mažiau aiškus. Kai kurie objektai neturi nei atributų, nei metodų, nors galėjo juos turėti. Ne visi objektai sukuria poklasius. Bet viskas yra objektas ta prasme, kad jis gali būti priskirtas kintamajam arba perduotas funkcijai kaip argumentas.

Galbūt teko susidurti su terminu „ pirmos klasės objektas»Kitose programose. Python'e funkcijos yra pirmos klasės daiktai. Funkcija gali būti perduodama kaip argumentas kitai funkcijai. Moduliai - pirmos klasės daiktai. Visas modulis gali būti perduodamas kaip argumentas funkcijai. Klasės yra pirmosios klasės objektai, o jų atskiri egzemplioriai taip pat yra pirmosios klasės objektai.

Tai labai svarbu, todėl pakartosiu tai, jei praleisite kelis pirmus kartus: viskas python'e yra objektas. Linijos yra objektai. Sąrašai yra objektai. Funkcijos yra objektai. Klasės yra objektai. Klasių egzemplioriai yra objektai. Ir net moduliai yra objektai.

Įdubimas

„Python“ funkcijos neturi aiškių instrukcijų prasideda  ir pabaiga, nei petnešos, rodančios, kur prasideda funkcijos kodas ir kur jis baigiasi. Skirstytuvai yra tik dvitaškis (:) ir paties kodo įtrauka.

def approximate_size (dydis, a_kilobyte_is_1024_bytes \u003d True): ①
jei dydis< 0 : ②
kelti „ValueError“ ( "skaičius neturi būti neigiamas") ③

   daugybė \u003d 1024, jei a_kilobyte_is_1024_bytes dar 1000
priesagai SUFFIXES [kelis]: ⑤
   dydis / \u003d daugybė
jei dydis< multiple:
grįžti "(0: .1f) (1)" .formatas (dydis, priesaga)

kelti „ValueError“ ( "skaičius per didelis")

Kodo blokai nustatomi pagal jų įtrauką. "Kodo blokai" turiu omenyje funkcijas, blokus jeiciklai   ir kol  ir tt Padidinus įtrauką, blokas pradedamas, o mažinant - baigiasi. Nėra skliaustų ir nėra raktinių žodžių. Tai reiškia, kad spragos yra svarbios, taip pat ir jų skaičius. Šiame pavyzdyje funkcijos kodas yra padalintas iš keturių tarpų. Nebūtinai turi būti tiksliai keturi tarpai, tiesiog jų skaičius turėtų būti pastovus. Pirmoji eilutė, į kurią nepateksite įtraukų, reikš funkcijos pabaigą.
Operatoriui jei  turėtų sekti kodų bloką. Jei, apskaičiavus sąlyginę išraišką, paaiškėja, kad ji yra tiesa, tada blokas, kuris bus įterptas, bus įvykdytas, priešingu atveju įvyks perėjimas į bloką. dar  (jei yra). Atminkite, kad skliausteliuose nėra išraiškos.
Ši eilutė yra bloko viduje. jei. Operatorius kelti  meta išimtį (pvz „ValueError“), bet tik tuo atveju, jei dydis < 0 .
Vis dar yra ne  funkcijos pabaiga. Visiškai tuščios eilutės nelaikomos. Jie gali pagerinti kodo skaitomumą, tačiau negali būti naudojami kaip kodų blokų atskyrikliai. Funkcijų kodo blokas tęsiasi kitoje eilutėje.
Kilpos operatorius   taip pat pradeda kodo bloką. Kodo blokuose gali būti keletas eilučių, būtent tiek eilučių, kiek ta pati įtraukos reikšmė. Šis ciklas   yra trys kodo eilutės. Kito eilutės kodo blokams apibūdinti nėra kitų sintaksės konstruktų. Tiesiog įtraukite ir būsite laimingi!

Išsiaiškinę vidinius prieštaravimus ir nupiešę porą žiaurių analogų su „Fortran“, susidraugausite su įtrauka ir pradėsite matyti jų pranašumus. Vienas pagrindinių privalumų yra tai, kad visos „Python“ programos atrodo beveik vienodai, nes „padding“ yra kalbos reikalavimas, o ne stiliaus problema. Tai leidžia lengviau perskaityti ir suprasti kitų žmonių parašytą „Python“ kodą.

Išimtys

Išimtys (angliškos išimtys - nenormalios, išskirtinės situacijos, reikalaujančios specialaus elgesio) visur naudojamos Python'e. Kiekvienas „Python“ standartinės bibliotekos modulis jas naudoja, o pats „Python“ jas vadina daugeliu atvejų. Su jais ne kartą susitiksite šios knygos puslapiuose.

Kokia išimtis? Paprastai tai yra klaida, ženklas, kad kažkas ne taip. (Ne visos išimtys yra klaidos, tačiau kol kas tai nėra svarbu.) Kai kuriose programavimo kalbose įprasta grąžinti klaidos kodą, kurį tada jūs patikrinti. Python'e įprasta naudoti išimtis, kurias jūs procesas.

Kai „Python“ apvalkale įvyksta klaida, joje pateikiama tam tikra išsami informacija apie išimtį ir kaip ji įvyko, ir viskas. Tai vadinama neapdorotas  išimtis. Kai buvo išmesta ši išimtis, nebuvo jokio programos kodo, kad galėtų tai pastebėti ir tinkamai valdyti, todėl jis iššoko iki aukščiausio lygio - į „Python“ apvalkalą, kuris išleido šiek tiek derinimo informacijos ir nuramino. Lukšte tai nėra taip baisu, tačiau jei tai atsitiks šios programos veikimo metu, visa programa suduš, jei išimtis nebus apdorota. Gal tai yra tai, ko jums reikia, o gal ne.

Išimties rezultatas ne visada yra visos programos gedimas. Išimtys gali procesas. Kartais išimčių atsiranda dėl realių klaidų jūsų kode (pavyzdžiui, prieiga prie neegzistuojančio kintamojo), tačiau kartais išimtį galite numatyti. Jei atidarysite failą, jo gali nebūti. Jei importuosite modulį, jis gali būti neįdiegtas. Jei prisijungsite prie duomenų bazės, ji gali būti neprieinama arba neturite pakankamai leidimų jai pasiekti. Jei žinote, kad kai kuri kodo eilutė gali sukelti išimtį, tuomet turėtumėte ją tvarkyti naudodami bloką pabandykite ... išskyrus.

Funkcija apytiksliai ()   išimtis iškelia dviem skirtingais atvejais: jei jai perduotas dydis yra didesnis nei funkcija gali valdyti, arba jei jis yra mažesnis už nulį.

jei dydis< 0 :
kelti „ValueError“ ( "skaičius neturi būti neigiamas")

Išimčių metimo sintaksė yra gana paprasta. Būtina parašyti operatorių kelti, po kurio nurodomas išimties pavadinimas ir pasirinktinai derinama derinimo eilutė. Sintaksė primena funkcijos skambutį. (Tiesą sakant, išimtys įgyvendinamos kaip klasės ir operatorius kelti  tiesiog paverčia klasę „ValueError“  ir perduoda eilutę savo inicijavimo metodui "skaičius neturi būti neigiamas". Bet mes lenkiame save!)

Gaunamos importo klaidos

Viena iš „Python“ įmontuotų išimčių yra „Importerror“ (importo klaida), kuri vadinama tuo atveju, jei modulio negalima importuoti. Tai gali nutikti dėl kelių priežasčių, iš kurių paprasčiausia yra modulio trūkumas. Ką galima naudoti norint įtraukti į programą pasirenkamas funkcijas. Pavyzdžiui, chardetų biblioteka suteikia galimybę automatiškai aptikti simbolių kodavimus. Tarkime, kad jūsų programa nori naudoti šią biblioteką, jei ji egzistuoja, arba tęsti tyliai, jei vartotojas jos neįdiegė. Tai galite padaryti naudodami bloką pabandykite ... išskyrus.

pabandykite:
  importuoti chardetą
išskyrus „ImportError“:
  chardet \u003d Nėra

Po to paprastu galite patikrinti, ar nėra šadelės modulio jei:

jei kardetas:
# padaryk ką nors
dar:
# tęskite toliau

Kitas dažnas išimčių naudojimas „Importerror“  - Pasirinkti du moduliai, teikiantys tą pačią sąsają (API), o geriau naudoti vieną iš jų (galbūt jis veikia greičiau arba reikalauja mažiau atminties). Norėdami tai padaryti, pirmiausia galite pabandyti importuoti vieną modulį, o jei nepavyks, tada importuokite kitą. Pavyzdžiui, XML skyriuje kalbama apie du modulius, įgyvendinančius tą pačią API, vadinamąją „ElementTree“ API. Pirmasis yra „lxml“ - trečiosios šalies modulis, kurį turite atsisiųsti ir įdiegti patys. Antra - xml .etree .ElementTree  - lėčiau, bet įtraukta į „Python 3“ standartinę biblioteką.

pabandykite:
iš lxml importo etree
išskyrus „ImportError“:
importuoti xml. trečiąjį. „ElementTree“ kaip etree

Vykdydamas šį bloką pabandykite ... išskyrus  vienas iš dviejų modulių pavadinimu etree bus importuotas. Kadangi abu moduliai įgyvendina tą pačią API, šiam kodui nereikia tikrinti, kuris iš šių modulių buvo importuotas. Ir kadangi importuotas modulis bet kokiu atveju yra vadinamas etree, tada jums nereikia dėti papildomų jei  pasiekti skirtingai nuo modulių.

Nesusiję kintamieji

Pažvelkime dar kartą į šią funkcijos eilutę apytiksliai_sudekite () :

daugialypis \u003d 1024, jei a_kilobyte_is_1024_bytes else 1000

Niekur nedeklaravome daugybinio kintamojo (daugiklio), priskyrėme tik jo vertę. Viskas gerai, „Python“ leidžia tai padaryti. Ką jis neleis daryti, yra kreiptis į kintamąjį, kuriam nebuvo priskirta vertė. Jei bandysite tai padaryti, bus išimtis „NameError“  (vardo klaida).

\u003e\u003e\u003e x
   Failas “ ", 1 eilutė, į
  „NameError“: vardas „x“ nėra apibrėžtas
  \u003e\u003e\u003e x \u003d 1
  \u003e\u003e\u003e x
1

„Shell“ pranešimo vertimas: ", 1 eilutė,<модуль>   „NameError“: vardas „x“ nėra apibrėžtas

Vieną dieną jūs pasakysite Python „ačiū“ už tai.

Viskas priklauso nuo didžiųjų ir mažųjų raidžių

Visi „Python“ pavadinimai yra didžiosios ir mažosios raidės - kintamųjų, funkcijų, klasių, modulių, išimčių pavadinimai. Viskas, ką galima skaityti, parašyti, iškviesti, sukurti ar importuoti, yra didžiosios ir mažosios raidės.

\u003e\u003e\u003e an_integer \u003d 1
  \u003e\u003e\u003e an_integer
1
  \u003e\u003e\u003e AN_INTEGER
  Traceback (paskutinis skambutis paskutinis):
   Failas “ ", 1 eilutė, į
  „NameError“: vardas „AN_INTEGER“ nėra apibrėžtas
  \u003e\u003e\u003e „An_Integer“
  Traceback (paskutinis skambutis paskutinis):
   Failas “ ", 1 eilutė, į
  „NameError“: vardas „An_Integer“ nėra apibrėžtas
  \u003e\u003e\u003e an_inteGer
  Traceback (paskutinis skambutis paskutinis):
   Failas “ ", 1 eilutė, į
  „NameError“: vardas „an_inteGer“ nėra apibrėžtas

Vertimo apvalkalo žinutės:   Paketų reklama (paskutinių skambučių sąrašas): Failas " ", 1 eilutė,<модуль>   „NameError: vardas“<имя>neapibrėžta

Vykdomi scenarijai

Python'e viskas yra objektas.

Python moduliai yra objektai, turintys keletą naudingų atributų. Ši aplinkybė gali būti naudojama paprastam modulių testavimui, kai jie yra rašomi, įtraukiant specialų kodo bloką, kuris bus vykdomas paleidus failą iš komandinės eilutės. Pažvelkite į paskutines humanize.py eilutes:

jei __name__ \u003d\u003d "__main__":
spausdinti (apytikslis_ dydis (1000000000000, klaidinga))
spausdinti (apytikslis_ dydis (1000000000000))

Taigi, ką daro šis blokas? jei  ypatinga? Visi moduliai, kaip ir objektai, turi įmontuotą atributą __name__ (vardas). Šio atributo vertė priklauso nuo to, kaip modulis naudojamas. Jei modulis yra importuotas, tada __name__ užima reikšmę, lygią modulio failo pavadinimui, be plėtinio ir katalogo kelio.

\u003e\u003e\u003e importuoti humanize
\u003e\u003e\u003e žmogiškas .__ vardas__
"humanize"

Bet modulį galima paleisti tiesiogiai kaip nepriklausomą programą, tokiu atveju __name__ įgis ypatingą reikšmę - __main__. Python apskaičiuoja sąlyginės išraiškos vertę teiginyje jei

  • „Python“ žinynas  paaiškina, ką reiškia žodžiai „Python'e viskas yra objektas“, nes kai kurie žmonės yra pedantai, mėgstantys ilgas diskusijas apie tokius dalykus.