Apie gyvūnus

Python

Pin
Send
Share
Send


  • Vertimai, 2018 m. Rugsėjo 6 d., 19:22
  • Nikita Priyatselyuk

Python yra viena populiariausių ir populiariausių programavimo kalbų. Tam yra kelios priežastys:

  • Tai lengva išmokti.
  • Jis yra labai universalus.
  • Jis turi daug modulių ir bibliotekų.

Dirbdami su „Python“, kiekvienas randa sau naudingų modulių ir gudrybių. Šioje kolekcijoje sužinosite apie keletą naudingų gudrybių.

Kolekcijos

„Python“ turi puikius įmontuotų duomenų tipus, tačiau kartais jie elgiasi ne taip, kaip norėtų.

Laimei, „Python“ integruotoje bibliotekoje yra kolekcijų modulis su patogiais papildomais duomenų tipais:

Ar kada susimąstėte, kaip žvelgti į objekto vidų Python'e ir pažiūrėti į jo atributus? Žinoma, jie galvojo.

XYZ mokykla, Maskva, iki 250 000 ₽

Naudokite komandinę eilutę:

Tai gali būti naudinga atliekant interaktyvią Python sesiją, taip pat dinamiškai tiriant objektus ir modulius, su kuriais dirbate.

Iš __future__ importo

Viena iš „Python“ populiarumo pasekmių yra ta, kad nuolat kuriamos ir išleidžiamos naujos versijos. Naujos versijos - naujos funkcijos, bet ne jums, jei naudojate pasenusius.

Tačiau ne viskas taip blogai. __Future__ modulis suteikia galimybę importuoti būsimų Python versijų funkcijas. Tai visai kaip laiko kelionė ar magija:

Geopija

Programuotojams gali būti sunku naršyti geografiją. Tačiau geopijos modulis supaprastina dalykus:

$ pip įdiegti geopiją

Tai veikia abstrahuodama skirtingų geokodavimo paslaugų API. Šis modulis leidžia sužinoti tikslų vietos adresą, ilgumą ir platumą bei lygų aukštį.

Jis taip pat turi naudingą atstumo klasę. Jis apskaičiuoja atstumą tarp dviejų vietų patogiame matavimo vienete.

Howdoi

Ar esate pakabintas ant problemos ir neprisimenate jos sprendimo? Reikia eiti į „StackOverflow“, bet nenorite palikti terminalo?

Tada jūs negalite išsiversti be šio komandinės eilutės įrankio:

$ pip įdiegti Howdoi

Užduokite bet kurį klausimą ir jis bandys rasti atsakymą į jį:

Tačiau būkite atsargūs: jis išskiria kodą iš svarbiausių „StackOverflow“ atsakymų ir ne visada pateikia naudingos informacijos:

$ howdoi išeiti vim

Ar turėčiau tęsti Python pamokų vertimą?

Apskritai, kaip paaiškėjo neseniai, „YouTube“ jau yra garsūs „Bucky Roberts“ vaizdo įrašai apie „Python3“ programavimą, čia juos galite žiūrėti spustelėję šią nuorodą:

Atsisakykite komentaro, jei turėčiau tai pasakyti toliau, net manydamas, kad ši medžiaga jau išversta. Ačiū už dėmesį.

Pagrindai, 1 dalis. Kūdikiams.

Manoma, kad įrašas http://pikabu.ru/story/hello_world_4265035 jau perskaitytas arba jūs turite kokį nors „Linux“ paskirstymą.

Manoma, kad auditorija susidomės, ir jei taip bus, parašysiu dar keletą įrašų apie python'ą, kad galėčiau susipažinti su sintakse, standartinėmis duomenų struktūromis, kai kuriomis standartinėmis bibliotekomis, kad galėčiau tęsti „Django“ plėtrą.

Manoma, kad auditoriją sudaro ne daržoves primenančios amebos, o išsivysčiusieji, pasirengę naudoti savo kaukolės dėžę ne tik valgyti.

Norėdami pradėti, suvilioti. Galite parašyti daug apie tai, koks nuostabus python'as, koks jis naudojamas „bigdata“, duomenų rinkmenoms, interneto plėtrai ir viskam. Bet tai visi sausi žodžiai. Todėl pateiksiu keletą pavyzdžių, kur kaip pagrindinė kalba yra naudojamas pitonas.

„Instagram“ - visų mėgstamiausias nuotraukų, kuriose pateikiami maisto produktai, ir nešvankių kvailokų traukinių priegloba. Taip, jis parašytas python'e. Be to, „Django“ paimtas už rėmo, į kurį mes kreipsimės, jei šalia manęs bus žmonių, norinčių šliaužti. Be to, jie paėmė HTTP serverį „Gunicorn“, į kurį mes taip pat nuskaitydavome. Kaip duomenų bazę jie naudoja „PostgreSQL“ - mano mėgstamiausią RDBVS, todėl mes taip pat galime į ją nuskaityti.

„Reddit“ yra smagi juoko paslauga, manau, kad visi apie tai girdėjome. Jis taip pat parašytas python'e, bet piramidės rėmuose, o ne Django. Kaip duomenų bazė naudojamos dvi duomenų bazės: „Cassandra“ ir „PostgreSQL“. „Talpyklos“ ir „Facebook“ kompiuteriai naudojami kaip talpyklos. Kaip žinučių tarpininkas naudojamas „RabbitMQ“.Šaltinio kodas viešai prieinamas čia: https://github.com/reddit/reddit

exchange.livejournal.com - „LiveJournal“ tinklaraštininkų mainai, kurie neseniai atsidarė. Kodėl ji čia? Nes dalyvavau jos plėtroje. Jis taip pat parašytas „Django“ su „PostgreSQL“ duomenų baze.

Tuo masalas baigiasi ir prasideda mano nemylima dalis - kilpos, šakos ir kintamieji.

Visi kodai bus „Jupyter Notepad“ ekrano kopijos, pirma, todėl, kad man patogu jame rašyti, ir, antra, todėl, kad nėra ko kopijuoti kažkieno kodo.

Python yra kalba, pasižyminti dinamiška dinamika. Ką tai reiškia?

- Jei norite pridėti skaičių 5 su eilute „7“ - būsite apvogti. Tai vadinama stipriu spausdinimu. Jokių konversijų į „bendresnį“ tipą.

- Jei skaičius buvo išsaugotas kintamajame x, tai dar nereiškia, kad jam negalima priskirti eilutės. Tai yra dinaminis spausdinimas. Kintamojo tipo, žinoma, niekur nereikia nurodyti.

Maloni savybė yra lygiagretus paskyrimas. Taip pat palaikomas vertės keitimas.

Taip pat yra keletas užduočių, kurias aš stipriai Nerekomenduoju jo naudoti neapgalvotai (tai taikoma neplaniniams duomenų tipams, apie kuriuos mes kalbėsime vėliau):

Su kintamaisiais, pavyzdžiui, dabar.

Skirtingai nuo C tipo sintaksės, mes neturime nei garbanotųjų skliaustų blokams paryškinti, nei skliaustų sąlyginei išraiškai paryškinti (iš tikrųjų niekas netrukdo vynioti sąlygos skliausteliuose). Blokai pabrėžiami TIK įtraukomis. Jungiklių nėra, tik jei, elif ir dar. Šis pavyzdys, manau, man paaiškins viską:

O dabar maža staigmena. Nepaisant to, kad kalba rašoma griežtai, palaikomi kai kurių nelygių duomenų tipų (int, float, Decimal) palyginimai. Pavyzdžiui, 5 == 5,0 grįš tiesa, nors 5 yra sveikas skaičius, o 5,0 yra kablelis. Bet jo naudojimas laikomas bloga forma.

Jei iki šios dienos nežinojai žodžio „iteratorius“ ir rašei tik ciklus pagal indeksus, tokius kaip (int i = 0, i

Įprastoms rodyklių kilpoms yra diapazono generatorius. Apie generatorius taip pat vėliau.

Funkcijos python'e deklaruojamos dviem būdais:

Tačiau aš griežtai rekomenduoju naudoti antrąjį griežto reguliavimo metodą įprastoms funkcijoms apibrėžti. Lambda funkcijos (arba anoniminės funkcijos) yra reikalingos tik norint perduoti jas argumentui aukštesnės eilės funkcijoms.

Tikriausiai iš karto kilo du klausimai:

Kaip argumentą galima perduoti kitai funkcijai?

Kas yra aukštesnės eilės funkcija?

Nes python yra orientuotas į objektą, todėl viskas, kas jame yra, yra objektas. Ir funkcija taip pat. Funkcijos argumentas gali būti bet koks objektas, įskaitant ir funkcija:

Šiame pavyzdyje yra daug įdomių dalykų:

1) Apibrėžę funkciją (def), galite įvesti vadinamąją doktriną, kurioje aprašoma, ką funkcija daro. Tuo pačiu metu šis dokastruktūra yra saugoma funkcijos objekto atribute __doc__ (kuris tik dar kartą rodo, kad funkcija yra objektas)

2) atributas __name__ nurodo objekto pavadinimą (funkcija ar klasė)

3) h šiuo atveju yra aukštesnės eilės funkcija. Aukštesnės eilės funkcija yra funkcija, kuri priima arba grąžina kitą funkciją. Tai bus naudinga dekoratoriams, apie kuriuos taip pat vėliau.

Funkcijas galima priskirti kitiems kintamiesiems:

Bet vardas (__name__) išliks tas pats, nes Tiesą sakant, f ir same_func nurodo tik funkciją.

Net, atrodo, aš jau tolokai. Kitoje dalyje, jei matysiu auditorijos susidomėjimą, kalbėsiu apie standartines duomenų struktūras (sąrašus, sąrašus, žodynus, rinkinius) ir kas jie yra ir kam jie naudojami.

P.S. Įrašas buvo parašytas be paruošimo, tiesiogiai „picabu“ įrašo redaktoriui, parašykite apie visus komentarų trūkumus, mesti su šlepetėmis ir pomidorais.

Pradedantiesiems mokytis programavimo (Python)

Reikėtų pažymėti, kad python yra geriausias pasirinkimas pradedantiesiems, norintiems pradėti mokytis programavimo. Tačiau ši tema skirta ne vienam įrašui. Programavimo studijos neturėtų būti grindžiamos tik viena kalba, bet turėtų būti sudarytos iš kelių komponentų. Šis įrašas skirtas tiems, kurie žino, ko python nori išmokti, bet nežino, kokią literatūrą pasirinkti.

1.Michaelis Dawsonas - programavimas python'e

Verta pradėti nuo šios knygos. Be reikalo gilinantis į kalbą, svarstomi jos pagrindai.Visa medžiaga paremta daugybe pavyzdžių, daugiausia susijusių su žaidimų temomis. Skyrius yra sudarytas taip: pačioje pradžioje pateikiama programa, kurią galite parašyti panašiai kaip perskaitę skyrių, tačiau studijuodami susiduriate su daugybe paprastesnių programų, kurios lemia pagrindinės programos supratimą. Tai pažodžiui užtvindo knygą pavyzdžiais ir suteikia būtiną praktiką pradedantiesiems. Na, žinoma, tai verčia kurti savo programas.

Puiki knyga, tačiau per daug išsami pradedančiajam, ją verta perskaityti kartu su praktika. Kažkas panašaus: norėjote parašyti programą, tačiau jums trūksta išsamesnių žinių, kad ji būtų patogesnė / trumpesnė / gražesnė ir pan.

3.Pažymėkite „Summerfield“ - „Python 3“ programavimas

Yra tokia pati dinamika kaip ir pirmoje knygoje, nėra nereikalingos informacijos, tačiau ji yra sudėtingesnė, viskas nėra tokia kramtoma kaip Dawsono. Verta paminėti, kad perskaičius Dawsoną, šios knygos kūrimas nėra ypač sunkus.

4.Mark Lutz - Python programavimas

Knygoje mokoma pritaikyti „Mokymosi Pythono 4-ajame leidime“ įgytas žinias, tačiau ji taip pat yra perkrauta nereikalinga informacija pradedantiesiems, kurią bus daug lengviau suvokti po Dawsono ir „Summerfield“. Ši knyga yra pradinio kalbos tyrimo pabaiga. Įvaldę tai, galite pereiti prie gilesnio darbo.

Tikiuosi, kad kas nors padės šiai atrankai. Mėgaukitės skaitymu ir smagiai mokykitės.

„Yandex.Translator“, skirtą „Linux“ „Python“ GUI

Gana seniai reikėjo daugiakalbio vertėjo internete su uždara naršykle.

Ne, aš nebijau naudoti žodyno „ypač sudėtingais“ atvejais, tačiau kartais turiu perskaityti gana didelį tekstą ir ne visus žodžius žinau, kaip prarandamas kontekstas.

Versti apvalkalą yra gana patogu, ypač jei rašote, tarkime, Vi / vim. Perjunkite į kitą konsolę ir išverskite.

Klavišai yra paprasti ir lengvai įsimenami.

Bet to, kaip įprasta, nepakako. Norėjau grafikos.

Darbas „SublimeText“ ir „Zeal“ yra šiek tiek patogesnis nei plikas pultas.

Hmm ... Mąsčiau, galvojau ir nusprendžiau pritvirtinti vertėją prie greitojo klavišo.

Pasirinkimas krito ant gxmessage. Zenity man nepatiko, nepamenu kodėl.

Kodas buvo parašytas:

Tai man kurį laiką tiko. Norėdami „kontroliuoti + 1“ iš anglų kalbos, „kontrolė + 2“ į anglų. Gerai.

Bet tada vertimo kevalas ėmė žlugti.

Nežinau, kas nutiko kūrėjams, bet tai mane tikrai nuliūdino.

Nusprendžiau, kad laikas, ilgą laiką nerašiau python'o.

Trumpa „Google“ paieška paskatino mane naudoti „Yandex.API“, „Python“ ir „GTK + 3“ kaip gi modulį.

Kodėl gi, nes jūs paprastai rašėte PyQt5? Mano automobilyje jis veikia daug greičiau. Aparatas nėra naujas, atmintis taip pat (pagal šiuolaikinius standartus) nėra tokia karšta.

Dėl to aš turiu automatinį vertėją ant greitojo klavišo.

Ačiū visiems už dėmesį.

Sveikas pasaulis!

Aš čia rašiau apie vieną galingą, paprastą, įdomią biblioteką, kurią naudoju beveik kiekvieną dieną, tačiau staiga supratau, kad geriau pirmąjį įrašą pasidaryti tik faktams nustatyti tiems, kurie yra visiškai, visiškai nauji. :)

Todėl šiandien mes šiek tiek pakalbėsime apie tai, kas yra pitonas, ir pabandykime jį gauti savo kompiuteryje.

Jei jau programuojate python'e, tada šis įrašas jums tikrai nėra tinkamas. :) Jūs galite tiesiog neperskaityti, o parašyti čia ką nors įdomaus iš savo patirties! Su pirmenybe ir poetais, kaip ir tikėtasi. ,)

Taigi, kaip mums sako patikimas šaltinis (Wikipedia), python (aš tariu Python, kai kurie rusakalbiai sako Python) yra bendrosios paskirties programavimo kalba, kuria siekiama pagerinti kūrėjų produktyvumą ir kodo skaitomumą. Kitaip tariant, galite greitai ant jo užrašyti kodą ir suprasti, ką parašė kaimynas.

Nepaisant akivaizdaus apibrėžimo paprastumo, jis turi milžinišką potencialą, nes palaikomos kelios programavimo paradigmos vienu metu, daugybė funkcijų nėra dėžėje (standartinėje bibliotekoje) ir, be abejo, išplėtimas, dėka daugybės lengvai įdiegiamų nestandartinių bibliotekų.

Ar jie tai taiko praktiškai?

Žinoma! Python yra labai dažna kalba! Su ja galite kurti svetaines, apdoroti duomenis, dirbti su mašinų mokymu ir daug, daug daugiau įdomių dalykų. Jį naudoja daugelis didelių kompanijų (pvz., „Google“, kur dar toli).Su juo galite sudaryti paprastus kasdienio gyvenimo scenarijus ir rimtai įsitraukti į mokslinę bei komercinę plėtrą.

Domina? Tada pamėginkime ką nors parašyti ir paleisti Python'e! :)

Svarbu suprasti, kad tamsi būdai tai padaryti! Galite parašyti savo programą net galingoje kūrimo aplinkoje, naudodami sintaksės paryškinimą ir kitas gėrybes, net įprastame nešiojamajame kompiuteryje, net apskritai internete (ir paleiskite toje pačioje vietoje). Manau, kad tai bus atskiras įrašas. Kol kas aš tik parodysiu, kaip galite vykdyti komandas python interpreter'yje.

Ir iškart keli žodžiai apie pastarąją, nes jei ją perskaitysite, tada galbūt net nežinote, kas tai yra.

Python yra interpretuojama kalba. Trumpai tariant, tai reiškia, kad jos nurodymai vykdomi (aiškinami) vienas po kito nuosekliai, nekaupiant visko iš karto, kaip, pavyzdžiui, C kalba. Vertėjas yra tik speciali programa, nagrinėjanti vertimo žodžiu paslaugas.

Norėdami naudoti python kalbą, turite atsisiųsti ir įdiegti jos įgyvendinimą iš oficialios svetainės https://www.python.org/downloads/.

Pateiksiu 3-osios python'o kalbos (3.5.1) serijos pavyzdį, todėl rekomenduoju ją atsisiųsti. „Windows“ tai galima padaryti tiesiogiai naudojant šią nuorodą. Diegdami nepamirškite pažymėti langelioPridėti prie PATH, tai supaprastins jūsų gyvenimą ateityje.

Atsisiųsti ir įdiegti? Puiku! Paleiskime vertėją. Atidarykite komandinę eilutę (paspauskite Pradėti cmd) ir įveskite ten:

Vertėjas veikia! Taip, tai taip paprasta! Jei viskas bus padaryta teisingai, bus kažkas panašaus:

Dabar vykdykite pirmą komandą! Įveskite:

Taip, ji ką tik atspausdino tai, kas yra skliausteliuose, kabutėse ekrane! Tai atliko standartinę python kalbos funkciją - spausdinti (). Kaip matote, čia, skirtingai nei, pavyzdžiui, C, jums nereikia nieko prie jo pritvirtinti, jokiu būdu nereikia jo atskirti (šiuo konkrečiu atveju), nereikia nieko po jo dėti.

Paprastai tariant, vertėjas spausdins eilutes kabutėse ir be jų spausdinti () šiame režime, kaip ir skaičius (tik skaičius reikia rašyti be kabučių), taip pat net aritmetinės operacijos su skaičiais ir kintamaisiais, tačiau nepatarčiau prie to priprasti, nes jei programą vykdysite iš failo, tada panašus praleidimas spausdinti () nesukels nieko, išskyrus klaidą.

Beje, apie aritmetines operacijas. Jūs galite juos atsisakyti tiesiogiai, be sąžinės graužaties spausdinti (). Pabandykite, pavyzdžiui, tokia tvarka:

spausdinti (100 + 1)
spausdinti (42/7)
spausdinti (111111111 * 111111111)

Tai viskas dabar! Ačiū už dėmesį! Pirmąjį įrašą labai sunku parašyti visoje bendruomenėje - skaitytojų lygis nėra visiškai aiškus. Todėl nusprendžiau tai skirti absoliučiai pradedantiesiems. Tikiuosi neprarasti. :)

Ačiū už dėmesį!

Ar Python interpretuojamas ar sudaromas?

Tai dažnas nesusipratimų tarp „Python“ naujokų šaltinis.

Pirmas dalykas, kurį reikia suprasti: „Python“ yra sąsaja. Yra specifikacija, apibūdinanti, ką „Python“ turėtų daryti ir kaip ji turėtų elgtis (tai galioja bet kuriai sąsajai). Yra keletas diegimų (tai taip pat tinka bet kuriai sąsajai).

Antrasis: „interpretuotas“ ir „sudarytas“ yra diegimo, bet ne sąsajos savybės.

Taigi pats klausimas nėra visiškai teisingas.

Dažniausiai įgyvendinamame variante (CPython: parašyta C kalba, dažnai vadinama tiesiog „Python“ ir, žinoma, tuo, kurį naudojate, jei net neįsivaizduojate, ką aš interpretuoju). Atsakymas yra: interpretuojamas su šiek tiek kompiliavimo. „CPython“ sukomponuoja * „Python“ išeities kodą į baitinį kodą ir tada jį interpretuoja, paleisdamas jį proceso metu.

* Pastaba: tai nėra tiksliai „kompiliacija“ tradicine prasme. Paprastai mes manome, kad „kompiliacija“ yra aukšto lygio kalbos pavertimas mašininiu kodu. Tačiau tam tikra prasme tai yra „kompiliacija“.

Išnagrinėsime šį atsakymą geriau, nes tai padės mums suprasti kai kurias sąvokas, kurios mūsų laukia šiame straipsnyje.

Baitinis kodas arba kompiuterio kodas

Labai svarbu suprasti skirtumą tarp baitinio kodo ir mašininio (arba vietinio) kodo. Turbūt lengviausias būdas tai suprasti yra pavyzdys:

- C sudaromas į mašinos kodą, kurį vėliau tiesiogiai paleidžia procesorius. Kiekviena instrukcija verčia procesorių atlikti skirtingus veiksmus.
- „Java“ sudedama į baitinį kodą, kuris vėliau paleidžiamas „Java Virtual Machine“ (JVM) - abstrakčiu kompiuteriu, kuriame vykdomos programos. Kiekvieną nurodymą apdoroja JVM, sąveikaujantis su kompiuteriu.

Labai supaprastinant: mašinos kodas yra daug greitesnis, tačiau baitų kodas yra geriau perkeliamas ir saugus.

Mašinos kodas gali skirtis priklausomai nuo mašinos, tuo tarpu baitas kodas yra vienodas visose mašinose. Galime pasakyti, kad mašinos kodas yra optimizuotas jūsų konfigūracijai.

Grįžtant prie „CPython“, operacijų grandinė yra tokia:

1. „CPython“ sudeda jūsų „Python“ šaltinio kodą į baitų kodus.
2. Šis baitas vykdomas virtualioje mašinoje „CPython“.

Pradedantieji dažnai daro prielaidą, kad Python yra sudaromas dėl .pyc failų buvimo. Iš dalies tai tiesa: .pyc failai sudaromi baitų kodais, kurie vėliau interpretuojami. Taigi, jei savo kodą vykdėte Python'e ir turite .pyc failą, antrą kartą jis veiks greičiau, nes jo nereikės perkompiliuoti į baitinius kodus.

Alternatyvios virtualios mašinos: Jython, IronPython ir kitos

Kaip jau sakiau aukščiau, „Python“ turi keletą įgyvendinimų. Vėlgi, kaip minėta aukščiau, „CPython“ yra pats populiariausias. Ši „Python“ versija parašyta C kalba ir laikoma „numatytuoju“ įgyvendinimu.

Bet kaip dėl alternatyvų? Vienas ryškiausių yra „Jython“, „Python“ diegimas „Java“, kuriame naudojamas JVM. Nors „CPython“ sukuria baitinį kodą, kad būtų galima paleisti „CPython“ VM, „Jython“ sugeneruoja „Java“ baitinį kodą, kad jis būtų paleistas JVM (tai yra tas pats, kas kompiliaujant „Java“ programą).

„Kodėl jums gali reikėti naudoti alternatyvų diegimą?“, Jūs klausiate. Na, pradedantiesiems, skirtingi diegimai gerai suderinami su skirtingais technologijų rinkiniais.

„CPython“ leidžia lengvai rašyti „Python“ kodo C plėtinius, nes pabaigoje jį pradeda C vertėjas. „Jython“ savo ruožtu supaprastina darbą su kitomis „Java“ programomis: galite importuoti bet kurias „Java“ klases be papildomų pastangų, iškviesti ir naudoti „Java“ klases iš „Jython“ programų. (Pastaba: jei dar negalvojote apie tai rimtai, jis yra gana beprotiškas. Mes gyvenome matydami laiką, kai galite maišyti skirtingas kalbas ir surinkti jas į vieną visumą. Kaip pažymėjo Rostinas, programos, kurios maišo „Fortran“ ir „C“ kodus, pasirodė gana seniai, taigi, tai nėra visiškai nauja, bet vis tiek šauni.)

Kaip pavyzdys, čia yra teisingas „Jython“ kodas:

„Java HotSpot“ (TM) 64 bitų serverio VM („Apple Inc.“) „Java“ versijoje „Java 1.0.6.0_51“
>>> iš java.util importuokite „HashSet“
>>> s = „HashSet“ (5)
>>> s.add („Foo“)
>>> s.add („Baras“)
>>> s
Foo baras

„IronPython“ yra dar vienas populiarus „Python“ įgyvendinimas, visiškai parašytas C # for .NET. Visų pirma, jis veikia .NET virtualioje mašinoje, jei galite tai vadinti „Microsoft“ bendrosios kalbos vykdymo laiku (CLR), palyginamu su JVM.

Galima sakyti, kad Jython: Java :: IronPython: C #. Jie dirba atitinkamose virtualiose mašinose, galima importuoti C # klases į „IronPython“ kodą, „Java“ klases į „Jython“ kodus ir pan.

Tai visiškai įmanoma išgyventi nieko neliečiant, išskyrus CPython. Bet pereidami prie kitų diegimų, jūs gaunate pranašumą, daugiausia dėl naudojamos technologijos kamino. Naudojate daug JVM pagrįstų kalbų? Jython gali jums tikti. Ar viskas .NET tinkle? Galbūt verta išbandyti „IronPython“ (o galbūt jūs jau tai padarėte).

Beje, nors tai netampa priežastimi pereiti prie kito diegimo, verta paminėti, kad šie diegimai iš tikrųjų skiriasi elgesiu. Tai taikoma ne tik Python kodo aiškinimui. Tačiau šie skirtumai paprastai nėra reikšmingi, jie dingsta ir laikui bėgant atsiranda dėl aktyvios plėtros. Pvz., „IronPython“ pagal nutylėjimą naudoja „Unicode“ eilutes, tačiau „CPython“ 2.x versijose naudoja ASCII („UnicodeEncodeError“ klaidos išmetimas ne ASCII simboliams) ir vis tiek palaiko „Unicode“ simbolius pagal numatytuosius parametrus 3.x versijose.

Kompiliacija skrendant („Just-in-Time Compilation“): „PyPy“ ir ateitis

Taigi, mes turime Python įgyvendinimą, parašytą C, dar vieną - Java, trečią - C #. Kitas loginis žingsnis: Python, parašyto ... Python, įgyvendinimas. (Apmokytas skaitytojas pastebės, kad šis teiginys šiek tiek klaidina).

Štai kodėl tai gali painioti. Norėdami pradėti, aptarsime kompiliaciją skrendant (tiesiog tinkamu laiku arba JIT).

Jit. Kodėl ir kaip

Leiskite jums priminti, kad vietinis kompiuterio kodas yra daug greitesnis nei baitinis kodas. Na, kas būtų, jei galėtumėte sudaryti dalį baito kodo ir paleisti jį kaip vietinį kodą? Aš turėčiau „sumokėti“ šiek tiek kainos (kitaip tariant: laiko) už baitinio kodo sudarymą, bet jei rezultatas pasiteisins greičiau, tada puiku! Tai motyvuoja JIT kompiliaciją - hibridinę techniką, kurioje derinami vertėjų ir kompiliatorių pranašumai. Trumpai tariant - JIT bando naudoti rinkinį, kad paspartintų aiškinimo sistemą.

Pvz., Čia yra bendras JIT metodas:

  1. Apibrėžkite dažnai naudojamą baitą.
  2. Sudarykite jį į savąjį mašinos kodą.
  3. Talpykloje išsaugokite rezultatą.
  4. Kai jums reikia paleisti tą patį baitinį kodą, naudokite jau sudarytą mašinos kodą ir pasinaudokite privalumais (ypač padidinkite greitį).

Štai visa „PyPy“ nuostata: naudojant JIT Python'e (priede galite rasti ankstesnius bandymus). Be abejo, yra ir kitų tikslų: „PyPy“ siekia kryžminio platformos darbo su nedideliu atminties kiekiu ir be palaikymo (atsisako „C“ kalbos skambučių rinkinio savo „krūvos“ naudai). Tačiau JIT yra pagrindinis pranašumas. Remiantis laiko bandymais, vidutinis pagreičio koeficientas yra 6,27. Išsamesnius duomenis galite gauti iš schemos „PyPy Speed ​​Center“:

PyPy sunku išsiaiškinti

„PyPy“ turi didžiulį potencialą, ir šiuo metu jis yra gerai suderinamas su „CPython“ (kad ant jo galėtumėte paleisti „Flask“, „Django“ ir kt.).

Bet su PyPy yra daug painiavos. (įvertinkite, pavyzdžiui, šį beprasmį pasiūlymą sukurti „PyPyPy“ ...). Mano nuomone, pagrindinė priežastis, dėl kurios tuo pačiu yra „PyPy“:

1. Python vertėjas, parašytas RPython (ne Python (aš prieš tai tave apgaudinėjau)). RPython yra „Python“ pogrupis su statiniu spausdinimu. Python'e išsamių pokalbių apie tipus vedimas yra „paprastai neįmanomas“, kodėl taip sunku? apsvarstykite šiuos dalykus:

x = atsitiktinis pasirinkimas (1, „foo“)

tai teisingas python kodas (Ademano dėka). Koks yra x? Kaip galime aptarti kintamųjų tipus, kai tipai net nėra priversti?). „RPython“ metu mes paaukojame šiek tiek lankstumo, tačiau mainais gauname galimybę daug ir daug daugiau valdyti atmintį, o tai padeda optimizuoti.

2. Kompiliatorius, kuris kaupia RPython kodą į įvairius formatus ir palaiko JIT. Numatytoji platforma yra C, tai yra RPython-in-C kompiliatorius, tačiau taip pat galite pasirinkti JVM ir kitus kaip tikslinę platformą.

Kad būtų lengviau aprašyti, aš juos pavadinsiu PyPy (1) ir PyPy (2).

Kam reikalingi šie du dalykai, o kodėl - viename rinkinyje? Pagalvokite apie tai taip: „PyPy“ (1) yra vertėjas, parašytas RPython. Tai yra, jis paima vartotojo kodą „Python“ ir sukompilijuoja jį į baitų kodus. Bet kad pats vertėjas (parašytas „RPython“) veiktų, jis turi būti aiškinamas kitu Pitono įgyvendinimu, tiesa?

Taigi, norėdami pradėti vertėją, galite tiesiog naudoti „CPython“. Bet tai nebus per greitai.

Vietoje to, mes naudojame „PyPy“ (2) (vadinamą „RPython Toolchain“), kad „PyPy“ interpretatorius būtų kompiliuotas į kitos platformos (pvz., C, JVM ar CLI) kodą, skirtą paleisti paskirties mašinoje, pridedant JIT. Tai stebuklinga: „PyPy“ dinamiškai prideda JIT prie vertėjo, sukurdamas savo kompiliatorių! (Vėlgi, tai yra beprotiška: mes sudarome vertėją pridedant dar vieną atskirą kompiliatorių).

Galų gale rezultatas bus atskiras vykdomasis failas, kuris interpretuoja Python šaltinio kodą ir naudoja JIT optimizavimą. Ko tau reikia! Sunku suprasti, bet galbūt ši schema padės:

Vėlgi, tikrasis „PyPy“ grožis yra tas, kad RPython'e galime parašyti daugybę skirtingų Python vertėjų, nesijaudindami apie JIT (išskyrus porą detalių). Po to „PyPy“ įdiegia JIT mums naudodamas „RPython Toolchain“ / „PyPy“ (2).

Tiesą sakant, gilindamiesi į abstrakciją, teoriškai galite parašyti bet kurios kalbos vertėją, nukreipti jį į „PyPy“ ir gauti tos kalbos JIT. Tai įmanoma, nes „PyPy“ daugiausia dėmesio skiria paties vertėjo optimizavimui, o ne kalbos, kurią jis aiškina, detalėms.

Norėčiau atkreipti dėmesį į tai, kad pati JIT yra nuostabi. Jis naudoja techniką, vadinamą „atsekamumu“, kuri veikia taip:

  1. Vykdykite vertėją ir viską interpretuokite (nepridedant JIT).
  2. Atlikite lengvai interpretuojamo kodo profiliavimą.
  3. Nurodykite operacijas, kurios jau buvo atliktos anksčiau.
  4. Sudarykite šias kodo dalis į mašinos kodą.

Galite sužinoti daugiau iš šio lengvai prieinamo ir labai įdomaus leidinio.

Apibendrinant: mes naudojame „PyPy“ kompiliatorių RPython-in-C (arba kitą tikslinės platformos formą), kad sukompiliuotume „PyyPu“ interpretatorių, įdiegtą RPython.

Išvada

Kodėl visa tai taip nuostabu? Kodėl verta vytis šią beprotišką idėją? Mano nuomone, Aleksas Gaynor tai labai gerai paaiškino savo tinklaraštyje: „„ PyPy “ateitis yra todėl, kad ji yra greitesnė, lankstesnė ir yra geriausia„ Python “plėtros platforma.“

  • Tai greita, nes šaltinio kodą sudaro pagrindinis kodas (naudojant JIT).
  • Jis yra lankstus, nes prideda JIT į vertėją be didelių pastangų.
  • Tai lanksti (vėlgi) - nes jūs galite rašyti vertėjus RPython, kuris vėliau supaprastina plėtinį, palyginti su tuo pačiu C (iš tikrųjų jis supaprastina tiek, kad yra net instrukcija, kaip rašyti savo vertėjus).

Papildymas: kiti vardai, kuriuos galbūt girdėjote

„Python 3000“ (Py3k): alternatyvus „Python 3.0“, pagrindinės „Python“ leidimo su atgaliniu suderinamumu, pavadinimas, pasirodęs 2008 m. „Py3k“ komanda prognozavo, kad naujai versijai įsitvirtinti prireiks maždaug penkerių metų. Ir nors didžioji dalis „Python“ kūrėjų (dėmesys: tolimas teiginys) ir toliau naudoja „Python 2.x“, žmonės vis daugiau galvoja apie Py3k.

„Cython“: „Python“ superetas, apimantis galimybę iškviesti C funkcijas.

  • Tikslas: Parašykime C plėtinius Python programoms.
  • Tai taip pat leidžia jums pridėti statinį spausdinimą prie esamo Python kodo, kuris po pakartotinio kompiliavimo gali padėti pasiekti C tipo našumą.
  • Primena PyPy, bet tai ne tas pats. „Cython“ atveju jūs privalote įvesti vartotojo kodą prieš pateikdami jį kompiliatoriui. „PyPy“ rašote seną gerą „Python“, o kompiliatorius atsakingas už bet kokį optimizavimą.

„Numba“: „Specializuotas teisingo laiko sudarytojas“, kuris prideda JIT prie „Python“ anotacijos kodo. Paprasčiau tariant, jūs duodate jam užuominų ir jis pagreitina kai kurias jūsų kodo dalis. „Numba“ yra duomenų analizės ir duomenų valdymo paketų „Anaconda“ platinimo rinkinio dalis.

IPython: labai skiriasi nuo visko, ką aptarėme. „Python“ kompiuterinė aplinka. Interaktyvus, palaikantis GUI paketus, naršykles ir pan.

„Psyco“: „Python“ išplėtimo modulis, vienas iš pirmųjų „Python“ bandymų JIT lauke. Jis ilgą laiką buvo pažymėtas kaip „nepalaikomas ir negyvas“. „Psyco“ vyriausiasis kūrėjas Arminas Rigo šiuo metu dirba su „PyPy“.

Kalbos rišimas

  • „RubyPython“: tiltas tarp „Ruby“ ir „Python“ virtualių mašinų. Leidžia jums įterpti Python kodą į „Ruby“ kodą. Jūs nurodote, kur prasideda ir baigiasi „Python“, o „RubyPython“ teikia duomenų perdavimą tarp virtualių mašinų.
  • PyObjc: kalbos ryšys tarp Python ir Objective-C, kuris elgiasi kaip tiltas tarp jų. Praktiškai tai reiškia, kad „Python“ kode galite naudoti „Objective-C“ bibliotekas (įskaitant viską, ko reikia OS X programai sukurti), o „Objective-C“ - „Python“ modulius. Tai patogu, nes CPython parašytas C kalba, kuri yra Objective-C pogrupis.
  • PyQt: nors PyObjc leidžia susieti Python su OS X GUI komponentais, PyQt tą patį daro ir Qt sistemai. Tai suteikia galimybę sukurti visavertes grafines sąsajas, pasiekti SQL duomenų bazes ir pan. Kitas įrankis, skirtas „Python“ paprastumui perkelti į kitas sistemas.

„Javascript“ sistemos

  • „pajs“ („Pižama“): programa „Python“ sukurti interneto ir darbalaukio programas. Komplekte yra „Python-in-JavaScript“ sudarytojas, valdiklių rinkinys ir kai kurie kiti įrankiai.
  • „Brython“: „Python“ virtuali mašina, parašyta „Javascript“. Leidžia paleisti Py3k kodą žiniatinklio naršyklėje.

5 juokingos ir epinės pikapų istorijos apie Naujųjų metų išvakares

Ar prisimeni, kas tau nutiko Naujųjų metų išvakarėse? Tarkime, kaip jie gruodžio 30–31 dienomis stovėjo eilėje prie mandarinų ar sudegino pagrindinį patiekalą. „Pikabushniki“ pasidalijo su mumis saldžiais, keistais ir juokingais atvejais. Šiame įraše skelbiame penkias geriausias istorijas ir dovanojame dovanas.

Jei nematėte įrašo, kuriame paskelbėme pasakojimų konkursą, papasakosime jums. Pradėjome jį kartu su „Yandex.Shev“ ir penkių įdomiausių istorijų autoriai, pasak žiuri, pažadėjo dovanoti rinkinius Naujųjų metų vakarienei. Neseniai tarnyba pristatė penkis atostogų meniu: su vištiena. jautiena, kiauliena, antis ir žuvis. Jie rinko pagrindinį karštą patiekalą, nestandartines salotas ir užkandžius. Ką mes tau sakome? Čia jau išbandėme.

Dalyvių visada yra daugiau nei nugalėtojų. Taigi, kad niekas neliktų tuščiomis rankomis: mes suteikiame reklamos kodą su 800 rublių nuolaida. Norėdami užsisakyti vakarienę su nuolaida, pateikdami užsakymą įveskite reklamos kredito kodą Pikabas. Akcija galioja nuo 4000 rublių iki gruodžio 28 dienos.

Dabar laikas nugalėtojų istorijoms!

1. „Labai garsus šampanas“

„Draugai nusprendė Naujuosius metus švęsti namuose. Jie pakvietė būrį draugų, stalas buvo kupinas salotų, marinatų, sumuštinių su ikrais ir kitų gėrybių. Ir dabar liko kelios minutės, kol suskamba varpeliai, visi atsikelia, savininkas atidaro šampaną po bendrų oohų ir aahs. Ir tada kamštiena iššoko iš butelio ir skrenda į stiklinę liustra, kabančią tiesiai virš stalo. Garsiai suskamba, į plokšteles krinta fragmentai. Taigi aš turėjau išmesti visą maistą ir greitai kažką uždaryti nauju būdu. Šeimininkė tuos Naujuosius metus ilgai prisimins. Linkiu kiekvienam išlikti optimistiškam bet kurioje situacijoje :) “

2. „Mamos padėjėjas“

„Aš turiu tik vieną juokingą istoriją apie Naujųjų metų vakarienę - kaip gruodžio 31 d., Mama virė visus šakniavaisius, nubėgo į verslą ir liepė man viską valyti negiliu. Bet aš esu savo motinos padėjėja. Aš viską išvaliau, tada taip pat supjaustiau į kubą ir sumaišiau. Kaip jauname amžiuje aš sužinojau, kad tai yra preparatas, skirtas alyvuogėms gaminti, vynmedžio kailis? Tų Naujųjų metų išvakarėse mes valgėme didžiulį dubenį salotų su bulvėmis, morkomis, svogūnais, burokėliais, žirniais, raugintais kopūstais, majonezu. Na, apskritai, viskas, kas buvo paruošta salotoms. Silkė, regis, neturėjo įtakos. Neprisimenu, tai buvo seniai :) Buvo labai nepatogu. Reikėjo palikti instrukcijas, kaip ir šiame pristatyme: pjaustyti, kištis, neliesti, jei rankos nėra nuo pečių. Tačiau jei rankos nėra iš pečių, jokios instrukcijos nepadės ... “

„Tai nėra gana pasiruošimas, bet juokinga istorija po chlamping laikrodžiu. Švenčiau Naujuosius metus su tėvais, nusprendėme pakeisti tradicijas ir nusipirkti raudono, o ne balto šampano. Įpusėjus prezidento kalbai, mano tėvelis siekia buteliuko atidaryti, nuplėšė foliją, bet negalėjo atidaryti kamščio. Įnirtingai bandė jį atidaryti, nes netrukus skambantis laikrodis tėtis negalėjo sugalvoti nieko geriau, nei sukrėsti ir pirštu stumti kamštį vienu nemandagiu, bet galingu judesiu. Tuo metu prasidėjo bacchanalia. Kaip iš filmo „Spindulys“, kuriame kraunama iš lifto su fontanu kraujas, mūsų šampanas liejosi į visas puses, Naujųjų metų stalą pripildydamas kruvinų purslų, mus prie stalo ir viską, kas aplinkui. Kamštis, rikošelinis nuo lubų, mamai įstrigo tiesiai į veidą. Mes užšalome, kai Putinas už televizoriaus ekrano, apimtas kruvinų dėmių, baigė savo kalbą ir ėjo atgal. Tėtis kažkaip išpylė šampano, kuris liko beveik buteliuko apačioje ir po isteriško juoko, visi dažais ir saldžiu šampanu, švęsdavome Naujuosius metus. P.S. Su mama viskas gerai, ji išlipo su lengvu išgąsčiu) “.

4. „Pinigų Lego pyragas už sėkmę“

„Taigi, ši istorija įvyko pažodžiui, likus kelioms valandoms iki Naujųjų metų. Iš virtuvės į didelį kambarį buvo perkeltas stalas, indai buvo išdėstyti ant plokštelių ir ruošėsi patiekti. Didžioji dalis šeimos jau susibūrė ir laukia šventės. Virtuvėje mama ir uošvė gamina indus, vaikai skuba iš kambario į kambarį.Ir tada mūsų ketverių metų sūnus pastebėjo, kad močiutė į pyragą įmetė monetą ir, žinoma, panikavo. Bet jis iškart nusiramino, kai jam buvo pasakyta, kad tokia tradicija: tas, kuris suras šią monetą, visus metus lydės sėkmę. Galiausiai visi atsisėdo prie stalo, pamažu pasibaigė olivieriumi, silke po kailiu, kepsniu ir atėjo laikas pyragui. Tiesiai iš krosnies, rožinis, kvapnus, garuojantis! Vyras nupjauna kiekvieną gabalą ir visi pradeda stabdyti pyragą peiliu, tikėdamiesi rasti monetą. Mano nuostabai, randu ne vieną, o keturis! Panašus laimikis visiems šventės dalyviams. Tokios gausos kaltininkė paaiškėjo, kai jos vyras susidūrė su Lego vyru. Kaip paaiškėjo, sūnus norėjo, kad metai būtų sėkmingi visiems, todėl paėmė smulkmeną iš naktinio staliuko, dosniai įpylė į pyragą, o suaugusieji nusisuko. Matyt, tikėdamasis, kad kiti metai bus tokie pat turtingi legos, jis ten pat įdėjo ir dizainerio figūrą. Žinoma, pyragas išėjo tiek pinigų, kad mes jo negalėjome suvalgyti, tačiau šie metai tikrai pasirodė laimingi ir kupini gerų prisiminimų! “

5. „Nauji metai paauglių mutantų Ninja vėžlių stiliumi“

Negaliu sakyti, kad istorija juokinga ar liūdna, tačiau ji iššaukia mano geriausius prisiminimus. Buvau šešerių metų ir buvau matęs pakankamai daug nindzių vėžlių, juos vaidinęs, bet, kas ten buvo, aš pats buvau nindzių vėžlys (mintyse). Ką jie mėgsta? Teisingai - pica! Ir būtent šio patiekalo paprašiau savo motinos prie Naujųjų metų stalo, o kadangi nebuvo pakankamai pinigų, mama ėmė išeiti ir ruošti picą. Su silke ir lydytu sūriu "Draugystė". Tą dieną sėdėjau po girliandas, gėriau „Pepsi“ ir valgiau picą su silke. Buvau laiminga “.

Sveikiname autorius! Mes liūdime, kad negalime duoti rinkinių visiems, visiems. Bet siųskite meilės spindulius (ir reklamos kodą Pikabas) Tegul Naujieji metai būna dar šiltesni ir jaukesni. Visi mandarinai!

Vaizdo kilmė ir aprašymas

Nuotrauka: „Mesh Python“

Retikulinis pitonas pirmą kartą aprašytas 1801 m. Vokiečių gamtininko I. Gottlobo. Rūšies pavadinimas „reticulatus“ iš lotynų kalbos išverstas kaip „tinklelis“ ir yra nuoroda į sudėtingą spalvų schemą. Bendrąjį pavadinimą Python pasiūlė prancūzų gamtininkas F. Dowdenas 1803 m.

2004 m. Atliktas genetinis DNR tyrimas nustatė, kad tinklinis pitonas yra arčiau vandens, o ne tigro pitono, kaip manyta anksčiau. 2008 m. Leslie Rawlings ir jo kolegos iš naujo analizavo morfologinius duomenis ir, derindami juos su genetinėmis medžiagomis, nustatė, kad grynoji gentis yra vandens python'o linijos atomazga.

Vaizdo įrašas: tinklelis „Python“

Remiantis molekuliniais genetiniais tyrimais, grynasis pitonas nuo 2014 m. Buvo oficialiai įtrauktas į sąrašą moksliniu pavadinimu „Malayopython reticulans“.

Šioje rūšyje galima išskirti tris porūšius:

  • malayopython reticulans reticulans, kuris yra nominotipinis taksonas,
  • malayopython reticulans saputrai, kuris yra gimtoji Indonezijos salos Sulavesio ir Selayaro salose,
  • malayopython reticulans jampeanus aptinkamas tik Jampea saloje.

Pogrupio egzistavimą galima paaiškinti tuo, kad tinklinis pitonas yra paskirstytas gana didelėse teritorijose ir yra atskirose salose. Šios gyvačių populiacijos yra izoliuotos ir nėra genetinio maišymo su kitomis. Šiuo metu tiriamas galimas ketvirtasis porūšis, esantis Sangihe saloje.

Python yra komerciškai sėkminga kalba

Džiugu žinoti, kad „Python“ yra naudojamas ne tik akademiniuose ir mėgėjų sluoksniuose, bet ir versle. Įmonės pasitiki juo pinigais. Daugelis kompanijų naudoja „Python“ - „Google“, „Paypal“, „Instagram“, NASA.

Python sukuria darbo vietas. Yra daug laisvų darbo vietų, įskaitant Rusijoje. Python yra pramoninė kalba. Jis yra panašus į „Pluses“ ir „Java“ poreikius. „Python“ kūrėjas turi galimybę įsitraukti į tikrą produkto kūrimą. Tai nepakeičia vietinio vartojimo kaip 1C.

Python yra labai lengva kalba

Tačiau „Python“ yra labai lengva išmokti. Pagrindai išmokstami per savaitę. Kitą savaitę vyks paketai ir mokymo aplinka. Dėl to per mažiau nei mėnesį galite pasiekti vietą projekte.

Python'e yra keletas sudėtingų temų. Taigi aš vadinu kalbos padalijimą, kurio tyrinėjimu gyvename atskirai. Lispe vienas sudėtingas taškas yra makrokomandos. Uoloje yra daugiau - bruožų, implikacijų, sudėtinių objektų. Python'e du - dekoratoriai ir metaklasės. Kasdieniniame darbe metaklasės nėra reikalingos, todėl išlieka tik vienas sunkumas. Susitvarkę su dekoratoriais, kalbant su kitomis kliūtimis nesusidursite.

Python programavimą priartino prie žmonių

Niekada nemačiau, kad kažkas minėtų šį daiktą. Python'as tapo kalba, kuria bet kuris inžinierius, mokslininkas ar technikas, neturintis programavimo įgūdžių, gali išspręsti pramoninio lygio problemas. Python yra problemų sprendimo įrankis.

Pasirodė specialūs projektai ir knygos, pavyzdžiui, „Python for Engineers“, „A Primer on Scientific Programming with Python“ ir kiti. Darbe mačiau „Python“ scenarijus, kuriuos parašė žmonės, kuriems visos programavimo žinios buvo sumažintos iki mokyklos ugdymo programos. Bet scenarijai veikė, darbą automatizavo, vadinasi, jie taupė laiką ir pinigus.

Su „Python“ vairuoti automobilį tapo lengviau. Kiekvienai užduočiai yra kopija, įklijuota iš „Stack Overflow“. Nesvarbu, ką jūs google - pertraukite liniją, sudarykite grafiką, padauginkite matricą - pirmosiose trijose leidimo nuorodose bus sprendimas.

Žinoma, toks stilius atleidžiamas tik ne programuotojams, kai svarbu gauti rezultatą, o ne patikimą palaikomą kodą.

Python yra lengvas būdas įsitraukti į pramonės plėtrą.

Primena tezę, kaip įsitraukti į šou verslą per lovą. Jei darote ką nors šalia IT, pavyzdžiui, administravimą, tinklus, palaikymą, 1C ar senas kalbas, pavyzdžiui, „Delphi“, tada „Python“ yra laimingas bilietas. Iš aukščiau pateiktų punktų mes sužinojome, kad tai lengva pramoninio lygio kalba. Galbūt jis taps tuo išvykstančio traukinio vagonu, į kurį turėsite laiko peršokti, kol norėsite ką nors pakeisti ir įveikti.

Aukščiau esančioje pastraipoje aš iš tikrųjų papasakojau savo istoriją. Prieš susitikdamas su Python'u, dirbau svetainėse CMS, Delphi ir 1C. Žinoma, su tuo galite susirasti darbą. Tačiau, pasinaudodamas „Python“ sąskaita, pasistūmėjau į savo seną darbą, tada persikėliau į kitą miestą 6000 km ir baigiau „Dataart“. Vėliau Europoje rasta udalenka.

Python palaiko visas programavimo paradigmas

Python yra stebėtinai lankstus. Jo dizainas ir sintaksė vienodai palaiko daugumą paradigmų. Standartinis OOP, imperatyvus požiūris, procedūrinis-modulinis, funkcinis.

Kiekviena paradigma įgyvendinama neišsamiai. Taigi, OOP nėra privačių kintamųjų ir sąsajų. Dvigubas pabraukimas yra įsilaužimas ir valdomas vienu metu. Sąsajos parašytos su mišiniais, tačiau neįmanoma tiksliai stebėti sąsajos.

Norint pilnaverčio FP, nepakanka pilnaverčių lambdų ir nekintančių kolekcijų. Trijuose didžiuosiuose sumažinimo funkcija buvo paslėpta standartinės bibliotekos dubenyje.

Tingus kompiuteris, dekoratoriai ir operatorių perkrovos atveria erdvę įdomiems manevrams. Python imituoja įvairias kalbas, pavyzdžiui:

Fake Lisp yra pseudo-Lisp, įdomus bandymas parašyti python tipo kodą su S išraiškomis.

Haskas - „Zakos“ pagal Haskello sintaksę. Gyvūnų augintinių girdytojams labai naudinga pamatyti, kokių gudrybių ėmėsi autorius, kad pasiektų tokį tikslų panašumą.

fn.py - funkcionalūs nishtyaki iš Roko. Panašiai labai įdomu pamatyti, kas yra po gaubtu.

Pagrįstas klausimas, kodėl toks lankstumas? Mano atsakymas yra tobulinti modelius ir metodus, praplėsti akiratį ir perimti kitų kalbų ir platformų gerąją patirtį.

Pavyzdžiui, viena funkcija, perkelta iš „Cluti“ į „Python“, sutaupys daug kodo eilučių ir pašalins erzinančias klaidas. Arba, sutikęs naują modelį, bandau jį įgyvendinti „Python“ programoje, kad įvertinčiau, kiek tai atitenka dideliam projektui.

Baigkite naudą. Python nėra tobulas. Matau šiuos trūkumus:

Nedideli sintaksės trūkumai

Python'as turi lakonišką sintaksę be nereikalingų skliaustų, kabliataškių ir kitų akmenukų, tinkama mašina, o ne asmuo. Nepaisant to, yra būdų, kaip nušauti koją ir patikrinti valandą derinimo metu, nesuprantant, kas vyko.

Mezgimo formavimas. Gal kas nors nežino, kad skliausteliuose esantys elementai yra simboliniai. Tiesą sakant, jis apibūdinamas kableliu. Yra viena elemento problema:

Pamiršau kablelį - gavau ne kartelę, o numerį. Palikite kablelį ant uodegos - ne skaičius, o rodyklė. Nebaisu, kodas nukris dėl skirtingų tipų. Skausmas prasidės, kai susikaups eilutės. Eilutė ir rinkinys gali būti naudojami bendroms operacijoms: iteracijai, prieigai pagal rodyklę, pjūviui. Kodas veikia be gedimų, tačiau duoda neteisingą rezultatą. Dėl vieno kablelio.

Šis pavyzdys. Dvi eilutės iš eilės be kablelio susilieja į vieną. Tai reiškia menkę

nes po „klaidos“ nėra kablelio. Pažymėjus būsenų klaidą, bus klaidinga, o tai yra tiesioginis verslo logikos pažeidimas.

Python kodas yra labai trapus, todėl jį reikia labai išbandyti. Šeštaisiais darbo su juo metais aš vis dar nesu tikras, ar tas ar kitas kodo fragmentas veiks tinkamai be testo.

OOP lyderystė

Nors Python palaiko daugelį paradigmų, OOP išlieka pagrindine. Įprasta sistema arba biblioteka yra klasių kolekcija, kurioje saugoma būsena ir keičiama viena kita.

Ar jūs kada nors nurašėte „Django“? As esu. Tai buvo pasirinktinis užpakalinio leidimo suteikimas. Derinimas truko daugiau nei valandą ir priminė BSDM sesiją.

Objektai „Request“, „Response“, „User“, „Session“ nustato bendrą nuodėmę. Kelis kartus nustatykite draugų nuorodas. Jie dėl kažkokių priežasčių įlipa į talpyklą.

Labai keista autorizacijos pagrindo programa. .Get_user () metodas grąžina vartotojo objektą. Tuomet šis vartotojas kažkur pasiklysta, nėra jokių nuorodų į jį. Sistema prašo .get_user_by_id () metodo. Aš jau atidaviau vartotojui klubą! Taigi, jūs turite arba vėl įlįsti į duomenų bazę ar tinklą, arba klasėje laikyti žodyną, kuris nėra saugus sriegiams.

Dėl tam tikrų priežasčių „Klage“ su savo nekintamais rinkiniais man niekada nereikėjo lipti į sesiją, prašyti ar atsakyti atgaline data ir ten ką nors taisyti. Kolekcijos pokyčiai bus perkeliami tik į priekį.

Aš nekviečiu programuoti tvirtu FP stiliumi. Atvirai kalbant, visi šie straipsniai „Programavimas Python'e funkcinio stiliaus“ dvasia atrodo apgailėtini. Sumažėjimai ir trijų aukštų lambdai yra visiškai patraukti už ausų. Projekto metu toks kodas neegzistuoja ir bus iškirptas, net jei jį kažkaip galima nutempti.

Tai sugadina funkcinį programavimą. Plačiai paplitusi klaidinga nuomonė, kad AF yra žemėlapiai ir lambdai.

Į „Python“ būtų malonu pridėti tai, kas paskatino atsisakyti valstybės. Pavyzdžiui, nekintamas žodynas, daugiau funkcijų dirbant su kolekcijomis.

Tačiau tai būtų buvę visiškai kita kalba.

Mažas greitis

Prieš metus jis teigė, kad tai visai nebuvo trūkumas. Atmintis pigi, priegloba nebrangi ir kiti pasiteisinimai. Šiandien tokį atsakymą laikau daug mėgėjų.

Svarbus vykdymo greitis. Įsivaizduokite, kad visa jūsų kompiuteryje esanti programinė įranga parašyta Python'u. Jis būtų dirbęs 20-30 kartų lėčiau, turėjęs pamiršti žaidimus ir „Photoshop“. Tai ne tik žingsnis atgal, bet ir kelių kartų grįžimas.

Neseniai man reikėjo išanalizuoti „Nginx“ žurnalą, „Google“ išleido „ngxtop“ programą. Aš nežiūrėjau, ant ko parašyta, sudėjau iš pakuočių. Valandą ji apdorojo gigabaito žurnalą. Tai pasirodė Python. C naudingumas išnagrinėtas per 5 minutes. Neteisingas pasirinkimas buvo laiko švaistymas.

Pitono kūrimas užtruko ilgai. Taip, jis lėtesnis, bet mes jį išleisime anksčiau nei konkurentas „Java“. Ir dabar yra kalbų, kuriose derinamas kodo greitis ir kūrimo greitis. Jei rašote X ir Y maždaug tuo pačiu metu, o Y važiuoja 5 kartus greičiau, kodėl gi vartoti X?

Apie papildomą lygintuvą. Sakyti, kad uždėti antrą mazgą yra nereikšmingas dalykas, gali tik tas, kuris rašo kodą ir neliečia diegimo. Keli mazgai yra paskirstyta sistema. Mums reikia balansavimo priemonės, žurnalo atskyrimo, sinchronizacijos problemų, nuoseklių atnaujinimų.

Mano asmeniniame projekte Python'as gyveno ilgą laiką, apkrova nuolat augo. Serveris užspringo, aš neturėjau laiko kelti tarifų plano. Tada jis išspyrė ir perrašė tai ant Klodo. Nepamiršiu šio jausmo, kai procesoriaus grafikas nukrito nuo 80 iki 20 procentų.

Jie priekaištauja GIL dvasia „tau to nereikia“, „naudok procesus“. Taigi sakiau, kol nesužinojau, kaip daugiagrybė veikia funkcinėmis kalbomis.

Mes paleidžiame žiniatinklio programą „Python“, naudodami tokią „uWSGI“. Prasideda pagrindinis procesas. Jis valdo darbuotojus, kurių kiekvienas yra žiniatinklio programa. Vienu metu paleidžiama 16 „Jungų“, kurių kiekvienas reaguoja, kai kitas yra užimtas.

Pagrindinis procesas užtikrina, kad visi būtų lygūs. Žudo tuos, kurie neatsako, per daug alksta arba per daug dirba - parengė užklausų limitą.

Šis metodas man atrodo negražus. Pirma, atsiranda nepasitikėjimas technologijomis ir nestabilus jų elgesys. Ilgai veikiant, procesai vyksta net pagrindiniu procesu. Tai reiškia, kad sistemą reikia paleisti iš naujo.

Paralelizavimas procesams neleidžia naudotis bendrąja atmintimi, verčiant naudoti tokius pakaitalus kaip „Memcache“ ar „Redis“, o efektyviausia talpykla yra bendroji atmintis.

Pagrindiniai procesai, tokie kaip „uWSGI“ ir „Green Unicorn“, yra papildomas klojimas grandinėje, per kurią eina užklausa. Nereikalingas I / O, prisijungimo ir kritimo taškas.

Galiausiai nieko negalima suderinti su GIL, išskyrus tinklo užklausas. Funkcinėse kalbose šių trūkumų nėra. Kolekcijų nekintamumas Sieninėje spintelėje, kanalų sistema Gow leidžia jums valdyti daugybę siūlų, nebijant nušauti kojos. Tai suerzina visą infrastruktūros sluoksnį: ramentus eilių, darbininkų ir vainikėlių scenarijų pavidalu. Ir papildomos sistemos visa tai palaikyti.

Difuzijos sunkumai

Programą, parašytą Python'e, sunku paskirstyti. Mažajam scenarijui reikalingas tam tikros versijos vertėjas, virtuali aplinka su krūva bibliotekų. Nėra tikslaus atsakymo į klausimą, kaip perduoti aplinką vartotojo aparatui.

Prieš keletą metų išbandžiau įvairius pakuotojus: „Py2Exe“, „PyInstaller“, „CxFreeze“. Tik paskutinis galėjo sudaryti klaidų programą „Windu“. Aš tai padariau labai gerai: išdaviau * .msi diegimo programą, užregistravau sistemos paslaugą. Bet dokų kūrimas ir skaitymas užtruko daug laiko. Kodėl „Python“ kūrėjai nesivargina į dėžę įtraukti galutinio produkto paskirstymo sistemos?

Norėdami parašyti scenarijų, paleiskite asamblėją ir gaukite archyvą su vykdomuoju failu. Kodėl funkcinės kalbos gali tai padaryti, bet Python negali?

Colet duoda uberjar. Aš renku jį „Mac“, įkeliu į prieglobą, kur nėra nieko, išskyrus „Java“ - jis veikia be problemų. Haskelis susideda į dvejetainį. Raketos, Rast - taip pat. Trisdešimties metų paprastas Lispas, Carlas, įdeda „Lisp“ mašiną į dvejetainę rinkmeną!

Tiesą sakant, norėdami paleisti interneto programą „Python“, turite turėti maždaug 10 000 * .py failų. Jei jų nėra, sistema nebus paleista. Šią įvairovę galima atskirti pagal Dockerį, bet čia mes susukame sielą.

Peržiūrėdamas trečiojo Python'o dokumentaciją radau įdomų „zipapp“ modulį. Pirmą minutę maniau, kad veltui priekaištauju liežuviui, kad reikalas pajudėjo nuo žemės paviršiaus. Paaiškėjo, kad modulis nepalaiko virtualios aplinkos ir bibliotekų bibliotekų. Negalėjau sukurti paprastos programos su „Postgres“ tvarkykle.

Kas yra Python?

Aš nesileisiu į kalbos kūrimo ir raidos istoriją, ją galite lengvai sužinoti iš vaizdo įrašo, kuris bus pridedamas žemiau. Svarbu pažymėti, kad Python yra scenarijų kalba. Tai reiškia, kad jūsų kodas yra tikrinamas, ar nėra klaidų, ir vykdomas nedelsiant be jokio papildomo kompiliavimo ar apdorojimo. Šis požiūris dar vadinamas interpretuotu.

Tai sumažina našumą, tačiau yra labai patogu. Yra vertėjas, į kurį galite įvesti komandas ir iškart pamatyti jų rezultatą. Toks interaktyvus darbas labai padeda mokytis.

Darbas vertėjo

Paleisti „Python“ vertėją yra labai paprasta bet kurioje operacinėje sistemoje. Pvz., „Linux“ terminale tiesiog įveskite python komandą:

Atsidariusioje apvalkalo eilutėje matome šiuo metu naudojamą „Python“ versiją. Šiais laikais labai paplitusios dvi „Python 2“ ir „Python 3“ versijos. Jie abu yra populiarūs, nes pirmasis sukūrė daugybę programų ir bibliotekų, o antrasis turi daugiau funkcijų. Todėl paskirstymai apima abi versijas. Pagal numatytuosius nustatymus paleista antroji versija. Bet jei jums reikia 3 versijos, tuomet turite padaryti:

Tai trečioji versija, kuri bus nagrinėjama šiame straipsnyje. Dabar apsvarstykite pagrindinius šios kalbos bruožus.

3. Derinimas su transformacija

Galite sujungti eilutę su skaičiumi arba logine. Bet tam reikia naudoti transformaciją. Tam naudojama str () funkcija:

str = "Tai yra bandymo numeris" + str (15)
spausdinti (str)

4. Substring paieška

Galite rasti ženklą arba teksto eilutes naudodami radimo metodą:

str = "Sveiki apsilankę losst.ru"
spausdinti (str.find („losst.ru“))

Šis metodas parodo pirmojo eilutės losst.ru atsiradimo vietą; jei ji randama, jei nieko nerandama, grąžinama reikšmė -1. Funkcija pradeda paiešką nuo pirmojo simbolio, bet jūs galite pradėti nuo devintosios, pavyzdžiui, 26:

str = "Sveiki apsilankę losst.ru"
spausdinti (str.find („losst“, 26))

Šioje parinktyje funkcija grįš -1, nes eilutė nebuvo rasta.

5. Substringo gavimas

Gavome ieškomo substringo poziciją, o dabar kaip gauti patį substringą ir kas yra po juo? Tam naudokite šią sintaksę. pradžia: pabaiga, tiesiog nurodykite du skaičius arba tik pirmąjį:

str = "Vienas du trys"
spausdinti (2 str.)
spausdinti (str2 :)
spausdinti (3: 5)
spausdinti (str-1)

Pirmoje eilutėje bus išvesta eilutė iš pirmojo į antrąjį ženklą, antroji - nuo antrojo iki pabaigos. Atminkite, kad atgalinis skaičiavimas prasideda nuo nulio. Norėdami skaičiuoti atvirkščiai, naudokite neigiamą skaičių.

6. Substringo pakeitimas

Galite pakeisti eilutės dalį pakeitimo metodu:

str = "Ši svetainė yra apie Linux"
str2 = str.replace („Linux“, „Windows“)
spausdinti (2 str.)

Jei yra daug įvykių, tada galima pakeisti tik pirmąjį:

str = "Tai yra" Linux "svetainė ir aš ją užsiprenumeravau"
str2 = str.replace („svetainė“, „puslapis“, 1)
spausdinti (2 str.)

7. Valymo stygos

Naudodami juostos funkciją galite pašalinti papildomus tarpus:

str = "Tai yra" Linux "svetainė"
spausdinti (str.strip ())

Taip pat galite pašalinti papildomus tarpus tik dešinėje juostoje arba tik kairėje - juostelėje.

9. Konvertuokite stygas

Yra keletas funkcijų konvertuoti eilutes į įvairius skaičių tipus: int (), float (), long () ir kt. Int () funkcija paverčiama sveiku skaičiumi, o plūduriuojanti () - slankiojo kablelio skaičiumi:

str = "10"
str2 = "20"
spausdinti (str + str2)
spausdinti (int (str) + int (str2))

10. Eilutės ilgis

Norėdami apskaičiuoti eilutės simbolių skaičių, galite naudoti funkcijas min (), max (), len ():

str = "Sveiki atvykę į Losstą"
spausdinti (min (str))
spausdinti (daugiausia (str))
spausdinti (len (str))

Pirmasis rodo mažiausią simbolio dydį, antrasis rodo maksimalų, o trečiasis rodo bendrą eilutės ilgį.

11. Iteravimas per stygą

Kiekvieną eilutės ženklą galite pasiekti atskirai, naudodami kilpą:

str = "Sveiki atvykę į svetainę"
i diapazonui (len (str)):
spausdinti (juostelėmis)

Norėdami apriboti kilpą, mes panaudojome funkciją len (). Atkreipkite dėmesį į įtrauką. Programavimas python'e yra paremtas tuo, nėra skliaustų blokams organizuoti, tik įtraukos.

2. Atsitiktinių skaičių generavimas

Galite gauti atsitiktinius skaičius naudodami atsitiktinį modulį:

importuoti atsitiktinai
spausdinti (random.random ())

Pagal numatytuosius nustatymus skaičius generuojamas nuo 0,0 iki 1,0. Bet jūs galite nustatyti savo diapazoną:

importuoti atsitiktinai
skaičiai = 1,2,3,4,5,6,7
spausdinti (atsitiktinis pasirinkimas (skaičiai))

Operacijos data ir laikas

„Python“ programavimo kalba turi „DateTime“ modulį, kuris leidžia atlikti įvairias operacijas su data ir laiku:

importuoti dienos laiką
cur_date = datetime.datetime.now ()
spausdinti (cur_date)
spausdinti (cur_date.year)
spausdinti (cur_date.day)
spausdinti (cur_date.weekday ())
spausdinti (cur_date.month)
spausdinti (cur_date.time ())

Pavyzdyje parodyta, kaip iš objekto išgauti norimą vertę. Galite sužinoti skirtumą tarp dviejų objektų:

importuoti dienos laiką
time1 = datetime.datetime.now ()
time2 = datetime.datetime.now ()
timediff = laikas2 - laikas1
spausdinti (laiko grafikas.mikrosekundės)

Datos objektus, turinčius savavališką vertę, galite sukurti patys:

time1 = datetime.datetime.now ()
time2 = datetime.timedelta (dienos = 3)
laikas3 = laikas1 + laikas2
spausdinti (laikas3.datos ())

1. Datos ir laiko formatavimas

Strftime metodas leidžia pakeisti datos ir laiko formatą, atsižvelgiant į pasirinktą standartą arba nurodytą formatą. Čia yra pagrindiniai formatavimo ženklai:

  • % a - savaitės diena, sutrumpintas pavadinimas,
  • % A - savaitės diena, vardas, pavardė,
  • % w - savaitės dienos numeris nuo 0 iki 6,
  • % d - mėnesio diena
  • % b - sutrumpintas mėnesio pavadinimas,
  • % B - pilno mėnesio pavadinimas,
  • % m - mėnesio numeris
  • % Y - metų skaičius
  • % H - dienos valanda 24 valandų formatu,
  • % l - dienos valanda 12 valandų formatu,
  • % p - AM arba PM,
  • % M - minutę
  • % S - antra.

importo dienos laikas
data1 = datetime.datetime.now ()
spausdinti (data1.strftime ('% d.% B% Y% I:% M% p '))

2. Iš eilutės sukurkite datą

Norėdami sukurti datos objektą iš eilutės, galite naudoti funkciją strptime ():

importo dienos laikas
data1 = datetime.datetime.strptime („2016-11-21“, „% Y-% m-% d")
data2 = datos laikas.datos laikas (metai = 2015 m. mėn. = 11, diena = 21)
spausdinti (data1),
spausdinti (data2),

1. Nukopijuokite failus

Norėdami nukopijuoti failus, turite naudoti „subutil“ modulio funkcijas:

importo langinė
new_path = shutil.copy („file1.txt“, „file2.txt“)

Jei failas1 yra simbolinė nuoroda, kopijavimo operacija vis tiek sukurs atskirą failą. Jei norite nukopijuoti simbolinę nuorodą, naudokite šią konstrukciją:

new_path = shutil.copy ('file1.txt', 'file2.txt', follow_symlinks = False)

3. Teksto failų skaitymas ir rašymas

Galite naudoti įmontuotas funkcijas failams atidaryti, jiems skaityti ar rašyti:

fd = atidaryti ('file1.txt')
content = fd.read ()
spausdinti (turinys)

Pirmiausia turite atidaryti failą, kad dirbtumėte naudodami atidarymo funkciją. Skaitymo funkcija naudojama duomenims iš failo nuskaityti, perskaitytas tekstas bus išsaugotas kintamajame. Galite nurodyti skaitomų baitų skaičių:

fd = atidaryti ('file1.txt')
content = fd.read (20)
spausdinti (turinys)

Jei failas yra per didelis, galite padalyti jį į eilutes ir jau apdoroti:

content = fd.readlines ()
spausdinti (turinys)

Norėdami įrašyti duomenis į failą, pirmiausia turite atidaryti juos rašyti. Yra du darbo režimai - perrašymas ir pridėjimas prie failo pabaigos. Įrašymo režimas:

fd = atidaryti ('file1.txt', 'w')
content = fd.write („Naujas turinys“)

Ir pridedant prie failo pabaigos:

fd = atidaryti ('file1.txt', 'a')
content = fd.write („Naujas turinys“)

5. Gauti kūrimo laiko

Norėdami gauti paskutinio pakeitimo, paskutinės prieigos ir sukūrimo laiką, galite naudoti funkcijas getmtime (), getatime () ir getctime (). Rezultatas bus rodomas „Unix“ formatu, todėl jį reikia konvertuoti į skaitomą formą:

importuoti os
importo dienos laikas
tim = os.path.getctime ('./failas1.txt')
spausdinti (datetime.datetime.fromtimestamp (tim))

6. Failų sąrašas

Naudodamiesi funkcija listdir (), galite gauti failų sąrašą aplanke:

importuoti os
failai = os.listdir ('.')
spausdinti (failai)

Norėdami išspręsti tą pačią problemą, galite naudoti „glob“ modulį:

importuoti glob
failai = glob.glob ('*')
spausdinti (failai)

7. Python objektų nuoseklumas

Serializavimas leidžia išsaugoti objektą eilutėje, kad jį vėliau būtų galima atkurti. Norėdami tai padaryti, naudokite marinavimo modulį:

importuoti marinatą
fd = atidaryti ('myfile.pk', 'wb')
„pickle.dump“ (mano duomenys, fd)

Tada, norėdami atkurti objektą, naudokite:

importuoti marinatą
fd = atidaryti ('myfile.pk', 'rb')
mydata = pickle.load (fd)

8. Failų glaudinimas

„Python“ standartinė biblioteka leidžia dirbti su įvairiais archyvo formatais, pavyzdžiui, „zip“, „tar“, „gzip“, „bzip2“. Norėdami peržiūrėti failo turinį:

importuoti ZIP failą
my_zip = zipfile.ZipFile ('my_file.zip', mode = 'r')
spausdinti (file.namelist ())

Norėdami sukurti ZIP archyvą:

importuoti ZIP failą
file = zipfile.ZipFile („failai.zip“, „w“)
file.write („file1.txt“)
file.close ()

Taip pat galite išpakuoti archyvą:

importuoti ZIP failą
file = zipfile.ZipFile („failai.zip“, „r“)
failas.extractall ()
file.close ()

Galite pridėti failus į archyvą taip:

importuoti ZIP failą
file = zipfile.ZipFile ('failai.zip', 'a')
file.write („file2.txt“)
file.close ()

9. CSV ir Exel failų analizė

Naudodami „pandos“ modulį, galite peržiūrėti ir išanalizuoti CSV ir „Exel“ lentelių turinį. Pirmiausia turite įdiegti modulį naudodami pip:

sudo pip montuoti pandos

Tada išanalizuokite, įveskite:

importo pandos
data = pandas.read_csv ('file.csv)

Pagal numatytuosius nustatymus „pandos“ naudoja pirmą stulpelį kiekvienos eilutės antraštėms. Galite nurodyti indekso stulpelį naudodami parametrą index_col arba nurodyti False, jei jis nereikalingas. Norėdami įrašyti failo pakeitimus, naudokite funkciją „to_csv“:

Tokiu pat būdu galite išanalizuoti „Exel“ failą:

data = pd.read_excel ('file.xls', sheetname = 'Sheet1')

Jei jums reikia atidaryti visas lenteles, naudokite:

Tada galite įrašyti visus duomenis atgal:

Tinklas „Python“ tinkle

„Python 3“ programavimas dažnai apima tinklų kūrimą. „Python“ standartinėje bibliotekoje yra lizdai žemo lygio prieigai prie tinklo. Tai būtina norint palaikyti daugelį tinklo protokolų.

importo lizdas
pagrindinis kompiuteris = '192.168.1.5'
uostas = 4040
my_sock = socket.create_connection ((pagrindinis kompiuteris, prievadas))

Šis kodas jungiamas prie 1940.168.1.5 aparato prievado 4040. Kai lizdas atidarytas, galite siųsti ir gauti duomenis:

Prieš eilutę turime parašyti simbolį b, nes mums reikia perduoti duomenis dvejetainiu režimu. Jei pranešimas yra per didelis, galite pakartoti:

msg = b 'Ilgesnis pranešimas eina čia'
mesglen = len (msg)
iš viso = 0
o iš viso

Norėdami gauti duomenis, taip pat turite atidaryti lizdą, naudojamas tik „my_sock_recv“ metodas:

Čia mes nurodome, kiek duomenų jums reikia gauti - 20 000, duomenys nebus perduoti kintamajam, kol nebus gauta 20 000 baitų duomenų. Jei pranešimas yra didesnis, tada, norėdami jį gauti, turite sukurti ciklą:

buferis = baitų skaičius (b '' * 2000)
„my_sock.recv_into“ (buferis)

Jei buferis tuščias, gautas pranešimas ten bus parašytas.

1. Laiškų priėmimas iš POP3 serverio

Norėdami gauti pranešimus, naudojame POP serverį:

importo „getpass“, „poplib“
pop_serv = poplib.POP3 ('192.168.1.5')
pop_serv.user („myuser“)
pop_serv.pass_ (getpass.getpass ())

„Getpass“ modulis leidžia saugiai atkurti vartotojo slaptažodį, kad jis nebūtų rodomas ekrane. Jei POP serveris naudoja saugų ryšį, turite naudoti POP3_SSL klasę. Jei ryšys pavyksta, galite bendrauti su serveriu:

msg_list = pop_serv.list () # pranešimų sąrašui
msg_count = pop_serv.msg_count ()

Norėdami baigti darbą, naudokite:

2. Laiškų priėmimas iš IMAP serverio

Norėdami prisijungti ir dirbti su IMAP serveriu, naudojamas „imaplib“ modulis:

import imaplib, getpass
„my_imap = imaplib.IMAP4“ („imap.server.com“)
„my_imap.login“ („myuser“, getpass.getpass ())

Jei jūsų IMAP serveris naudoja saugų ryšį, turite naudoti IMAP4_SSL klasę. Norėdami gauti pranešimų sąrašą, naudokite:

data = my_imap.search (nėra, „VISOS“)

Tada galite pereiti per pasirinktą sąrašą ir perskaityti kiekvieną pranešimą:

msg = my_imap.fetch (el. pašto adresas, '(RFC822)')

Nepamirškite uždaryti ryšio:

3. laiškų siuntimas

Laiškams siųsti naudojamas SMTP protokolas ir smtplib modulis:

importuoti smtplib, getpass
my_smtp = smtplib.SMTP (smtp.server.com ')
„my_smtp.login“ („myuser“, getpass.getpass ())

Kaip ir anksčiau, saugiam ryšiui naudokite SMTP_SSL. Kai ryšys užmegztas, galite nusiųsti pranešimą:

from_addr = '[email protected]'
to_addr = '[email protected]'
msg = 'Iš: [email protected] r nTam: [email protected] r n r nSveiki, tai yra bandomasis pranešimas'
„my_smtp.sendmail“ (iš_addr, to_addr, msg)

1. Tinklo tikrinimas

„Urllib“ modulis leidžia užklausti tinklalapių įvairiais būdais. Norėdami išsiųsti įprastą užklausą, naudojama užklausos klasė. Pvz., Vykdome įprastą puslapio užklausą:

importuoti urllib.request
„my_web = urllib.request.urlopen“ (https://www.google.com)
spausdinti („my_web.read“)

2. Naudojant POST metodą

Jei reikia pateikti žiniatinklio formą, turite naudoti ne GET užklausą, o POST:

importuoti urllib.request
mydata = b'Jūsų duomenys eina čia '
„my_req = urllib.request.Request“ („http: // localhost“, duomenys = mano duomenys, metodas = „POST“)
my_form = urllib.request.urlopen (my_req)
spausdinti („my_form.status“)

3. Internetinio serverio kūrimas

Naudodamiesi „Socket“ klase, galite priimti gaunamus ryšius, vadinasi, galite sukurti žiniatinklio serverį su minimaliomis funkcijomis:

importo lizdas
host = ''
uostas = 4242
„my_server = socket.socket“ (socket.AF_INET, socket.SOCK_STREAM)
„my_server.bind“ ((pagrindinis kompiuteris, prievadas))
„my_server.listen“ (1)

Kai serveris yra sukurtas. galite pradėti priimti ryšius:

addr = my_server.accept ()
spausdinti („Prisijungta iš pagrindinio kompiuterio“, pridėti)
duomenys = conn.recv (1024)

Ir nepamirškite uždaryti ryšio:

Daugiasluoksnis

Kaip ir dauguma šiuolaikinių kalbų, „Python“ leidžia paleisti keletą lygiagrečių gijų, kurios gali būti naudingos, jei reikia atlikti sudėtingus skaičiavimus. Standartinėje bibliotekoje yra sriegimo modulis, kuriame yra „Therad“ klasė:

importuoti sriegiai
def print_message ():
spausdinti („Žinutė atspausdinta iš kitos gijos“)
my_thread = threads.Thread (target = print_message)
my_thread.start ()

Jei funkcija veikia per ilgai, galite patikrinti, ar viskas tvarkoje, naudodamiesi funkcija is_alive (). Kartais jūsų gijoms reikia pasiekti pasaulinius išteklius. Tam naudojamos spynos:

importuoti sriegiai
num = 1
my_lock = sriegimas.Lock ()
def my_func ():
visuotinis skaičius, mano_lokas
my_lock.acquire ()
suma = num + 1
spausdinti (suma)
my_lock.release ()
my_thread = threads.Thread (target = my_func)
my_thread.start ()

Išvados

Šiame straipsnyje mes apžvelgėme python programavimo pagrindus. Dabar jūs žinote daugumą dažniausiai naudojamų funkcijų ir galite jas naudoti savo mažose programose. Jums patiks programavimas „Python 3“, tai labai lengva! Jei turite klausimų, paklauskite komentaruose!

Straipsnio pabaigoje puiki paskaita apie Pythoną:

Išvaizda ir savybės

Nuotrauka: „Big Mesh Python“

Retikliuotas pitonas yra milžiniška gyvatė, gyvenanti Azijoje. Vidutinis kūno ilgis ir vidutinis kūno svoris yra atitinkamai 4,78 m ir 170 kg. Kai kurie individai pasiekia 9,0 m ilgį ir 270 kg svorį. Nors tinkliniai pitonai, kurių ilgis viršija 6 m, yra reti, tačiau, remiantis Gineso rekordų knyga, tai yra vienintelė egzistuojanti gyvatė, kuri reguliariai viršija šį ilgį.

Retikuliuoto pitono kūno spalva yra nuo šviesiai geltonos iki rudos, juodomis linijomis, einančiomis nuo vidurinės akių srities įstrižai žemyn link galvos. Ant gyvatės galvos kartais yra dar viena juoda linija, einanti nuo snukio galo iki kaukolės ar pakaušio pagrindo. Tinklinio pitono spalvų modelis yra sudėtingas geometrinis piešinys, apimantis skirtingas spalvas. Nugara paprastai turi daugybę netaisyklingų deimantų pavidalų, apsuptų mažesnių žymių su šviesos centrais.

Įdomus faktas: plačioje šios rūšies geografinėje vietovėje dažnai pastebimi dideli dydžio, spalvos ir ženklinimo skirtumai.

Zoologijos sode spalvų gama gali atrodyti atšiauri, tačiau šešėlinėje džiunglių aplinkoje, tarp nukritusių lapų ir šiukšlių, python'as leidžia beveik išnykti.Paprastai ši rūšis parodė, kad patelės užauga daug didesnės nei patinai dydžio ir svorio. Vidutiniškai patelė gali užaugti iki 6,09 m ir 90 kg, skirtingai nuo patino, kurio vidutinis ilgis yra apie 4,5 m ir iki 45 kg.

Dabar jūs žinote, ar retikulinis pitonas yra nuodingas, ar ne. Sužinokime, kur gyvena milžiniška gyvatė.

Kur gyvena tinklinis pitonas?

Nuotrauka: gyvatės tinklelis

Python'as teikia pirmenybę tropiniam ir subtropiniam klimatui ir mėgsta būti šalia vandens. Iš pradžių jis gyveno atogrąžų miškuose ir pelkėse. Šių plotų valymas tampa vis mažesnis, grynasis pitonas pradeda prisitaikyti prie antrinių miškų ir žemės ūkio laukų ir gyvena labai tankiai su žmonėmis. Vis daugiau didelių gyvačių aptinkama mažuose miesteliuose, kur jas reikia perkelti.

Be to, tinklinis pitonas gali gyventi šalia upių ir gali būti aptinkamas vietose, kuriose yra šalia esančių upelių ir ežerų. Jis yra puikus plaukikas, galintis plaukti toli į jūrą, todėl gyvatė kolonizavo daugybę mažų salų, esančių jo diapazone. Sakoma, kad pirmaisiais XX amžiaus metais grynasis pitonas buvo nuolatinis lankytojas, net ir užimtame Bankoke.

Retikuliuoto pitono diapazonas plečiasi Pietų Azijoje:

Be to, rūšis yra plačiai paplitusi Nicobaro salose, taip pat: Sumatra, Mentawai salų grupė, 272 Natuna, Borneo, Sulawesi, Java, Lombok, Sumbawa, Timor, Maluku, Sumba, Flores, Bohol, Cebu, Leite, Mindanao, Mindoro salose. Luzonas, Palavanas, Panay, Polillo, Samar, Tavi-Tavi.

Tinklinis pitonas dominuoja drėgnuose atogrąžų miškuose, pelkėse ir pievų miškuose 1200–2500 m aukštyje. Reprodukcijai ir išgyvenimui reikalinga temperatūra turėtų būti nuo –24ºC iki –34ºC, esant dideliam kiekiui drėgmės.

Ką valgo tinklinis pitonas?

Nuotrauka: Geltonasis tinklas Python

Kaip ir visi pitonai, tinklinis medžioja nuo pasalos, laukdamas, kol auka pasieks smūgį, prieš tai griebdamas grobį savo kūnu ir žudydamas suspaudžiant. Yra žinoma, kad jis maitinasi žinduoliais ir įvairiomis paukščių rūšimis, kurie gyvena jos geografinėje zonoje.

Natūralią jo mitybą sudaro:

Dažnai medžioja naminius gyvūnus: kiaules, ožkas, šunis ir naminius paukščius. Paršeliai ir vaikai, sveriantys 10–15 kg, įtraukiami į įprastą racioną. Tačiau yra žinomas atvejis, kai praryjau akių pythoną, kurio svoris viršijo 60 kg. Jis medžioja šikšnosparnius, gaudydamas juos skrydžio metu, pritvirtindamas uodegą ant nelygumų urve. Maži, iki 3–4 m ilgio individai daugiausia maitinasi graužikais, pavyzdžiui, žiurkėmis, tuo tarpu didesni individai pereina į didesnį grobį.

Įdomus faktas: tinklelis, į kurį galima patekti, gali praryti grobį iki ketvirtadalio savo ilgio ir svorio. Tarp didžiausių dokumentais užfiksuotų grobio elementų galima paminėti 23 kg sveriantį malajų lokį, kurio badas buvo pusbadalis, kurį suvalgė 6,95 m dydžio gyvatė ir kuriam suvirškinti prireikė maždaug dešimties savaičių.

Manoma, kad retifikuoti pitonai gali tapti grobiu žmonėms dėl daugybės išpuolių prieš žmones gamtoje ir tinklainių pitonų namų savininkus. Yra žinomas bent vienas atvejis, kai „Python reticulatus“ įžengė į vyro mišką ir išvežė vaiką. Norėdami aptikti grobį, retikuliame pitone naudojamos jautrios duobės (specializuoti kai kurių gyvačių rūšių organai), kurios nustato žinduolių šilumą. Tai leidžia nustatyti gamybos vietą atsižvelgiant į jos temperatūrą į aplinką. Dėl šios savybės tinklinis pitonas nustato grobį ir plėšrūnus jų nematydamas.

Charakterio ir gyvenimo būdo bruožai

Nuotrauka: „Mesh Python“

Nepaisant to, kad jie yra artimi žmonėms, mažai žinoma apie šių gyvūnų elgesį. Retiklinis pitonas gyvena naktinį gyvenimo būdą ir didžiąją dienos dalį praleidžia pastogėje. Atstumai, kuriuos gyvūnai įveikia per savo gyvenimą, ar jie turi fiksuotas teritorijas, nebuvo išsamiai ištirti. Tinklinis pitonas yra vienišas, su kuriuo susiduria tik poravimosi sezono metu.

Šios gyvatės užima vietas, kuriose yra vandens šaltiniai. Judėjimo metu jie sugeba sutraukti raumenis ir kartu juos atpalaiduoti, sukurdami gyvatės judėjimo modelį. Dėl tiesių judesių ir didelių tinklinių pitonų kūno dydžio, gyvatės judesio tipas, kai ji suspaudžia savo kūną ir vėliau išsiskleidžia linijiniu judesiu, stebimas dažniau, nes tai leidžia didesniems individams judėti greičiau. Naudodamas gniuždymo ir tiesinimo techniką, pitonas gali lipti ant medžių.

Įdomus faktas: Naudodamiesi panašiais kūno judesiais, retifikuoti pitonai, kaip ir visos gyvatės, išmeta odą, kad pataisytų žaizdas ar tiesiog vystymosi metu. Odos nykimas arba lupimasis yra būtinas norint palengvinti nuolat augančią kūną.

Tinklinis pythonas praktiškai negirdi triukšmo ir yra vizualiai apribotas dėl nejudančių akių vokų. Todėl jis pasikliauna savo kvapu ir lytėjimu, kad surastų grobį ir išvengtų plėšrūnų. Gyvatė neturi ausų, ji turi specialų organą, leidžiantį pajusti virpesius žemėje. Dėl ausų trūkumo gyvatės ir kiti pitonai turi naudoti fizinius judesius, kad sukurtų vibracijas, per kurias jie bendrauja vienas su kitu.

Socialinė struktūra ir reprodukcija

Nuotrauka: „Big Mesh Python“

Retikinio pitono veisimosi sezonas trunka nuo vasario iki balandžio. Netrukus po žiemos pitonai pradeda ruoštis veisimui dėl perspektyvios vasaros šilumos. Daugelyje vietovių geografinė padėtis turi įtakos sezono pradžiai. Taigi pitonai veisiasi priklausomai nuo klimato pokyčių konkrečiame buveinių regione.

Veisimo zonoje turi būti daug grobio, kad patelė galėtų susilaukti palikuonių. Tinkliniams pitonams reikia negyvenamų teritorijų, kad būtų išlaikyta aukšta reprodukcija. Kiaušinių gyvybingumas priklauso nuo motinos sugebėjimo juos apsaugoti ir inkubuoti, taip pat nuo aukšto drėgmės lygio. Suaugę pitonai dažniausiai būna paruošti veisimui, kai patinas pasiekia apie 2,5 metro ilgį, o patelės - apie 3,0 metro ilgį. Tokį ilgį jie pasiekia per 3–5 metus abiem lytims.

Įdomūs faktai: Jei maisto yra daug, patelė kasmet susilaukia palikuonių. Vietose, kur nėra daug maisto, sumažėja sankabų dydis ir dažnis (kartą per 2-3 metus). Veisimo metais viena patelė gali duoti 8–107 kiaušinius, bet paprastai 25–50 kiaušinių. Vidutinis kūdikių kūno svoris gimimo metu yra 0,15 g.

Skirtingai nuo daugelio rūšių, tinklinis patelė išlieka sulankstytas perinti skirtuose kiaušiniuose, kad joms būtų šiluma. Raumenų susitraukimo metu patelė sušildo kiaušinius, todėl padidėja inkubacijos greitis ir palikuonių tikimybė išgyventi. Po gimimo maži tinkleliniai pitonai beveik nežino tėvų globos ir yra priversti gintis ir ieškoti maisto.

Natūralūs tinklinių pitonų priešai

Nuotrauka: grynasis pitonas gamtoje

Dėl savo dydžio ir galios retifikuoti pitonai praktiškai neturi natūralių priešų. Gyvatės kiaušinius ir neseniai perinti pitonus puola plėšrūnai, tokie kaip paukščiai (vanagai, ereliai, garniai) ir maži žinduoliai. Medžioti suaugusius tinklinius pitonus gali tik krokodilai ir kiti dideli plėšrūnai. Pjotonams kyla didelė atakos rizika tik tvenkinių pakraščiuose, kur galima tikėtis krokodilo atakų. Vienintelė gynyba nuo plėšrūnų, be dydžio, yra galingas kūno suspaudimas gyvatės pagalba, kuris per 3-4 minutes gali išstumti gyvybę iš priešo.

Žmogus yra pagrindinis tinklinio pitono priešas. Šie gyvūnai yra nužudomi ir nugręžiami, kad būtų galima gaminti odinius gaminius. Manoma, kad šiam tikslui kasmet nužudoma pusė milijono gyvūnų. Indonezijoje taip pat vartojami retifikuoti pitonai. Gyvūnų medžioklė pateisinama tuo, kad gyventojai nori apsaugoti savo galvijus ir vaikus nuo gyvačių.

Tinklinis pitonas yra viena iš nedaugelio žmonių gyvačių gyvačių.Šie išpuoliai nėra labai dažni, tačiau ši rūšis sukėlė keletą aukų tiek gamtoje, tiek nelaisvėje.

Tai patikimai žinoma apie kelis atvejus:

  • 1932 m. Filipinuose paauglys berniukas buvo suvalgytas 7,6 m ilgio pitono. Python'as pabėgo iš namų, o jį radę jie rado gyvatės savininko sūnų,
  • 1995 m. didelis grynasis pitonas nužudė 29 metų Ee Hyun Chuan iš pietinės Malaizijos valstijos Johoro. Gyvatė apvyniojo aplink negyvąjį kūną, įkišta galva į žandikaulius, kai aukos brolis jį aptiko,
  • 2009 m. 3 metų berniukas iš Las Vegaso buvo apvyniotas spirale su 5,5 m ilgio tinkleliu. Motina išgelbėjo kūdikį, peiliu pataikydama į pythoną,
  • 2017 m. 7 metų tinklo pitono skrandyje rastas 25 metų ūkininko iš Indonezijos kūnas. Gyvatė buvo nužudyta, o kūnas išvežtas. Tai buvo pirmas visiškai patvirtintas atvejis, kai python'as maitino žmones. Kūno ekstrahavimo procesas buvo užfiksuotas naudojant nuotraukas ir vaizdo įrašus,
  • 2018 m. birželio mėn. 54 metų indonezietis buvo suvalgytas 7 metrų ilgio pitono. Ji dingo dirbdama savo sode, o kitą dieną paieškos komanda netoli sodo rado pitoną su įpūtimu ant kūno. Internete buvo patalpintas išrautos gyvatės vaizdo įrašas.

Populiacija ir rūšių būklė

Nuotrauka: gyvatės tinklelis

Retikinio pitono populiacijos būklė labai skiriasi skirtingose ​​geografinio diapazono vietose. Tailande yra daugybė šių gyvačių, kur lietaus sezono metu jie praskrenda į žmonių namus. Filipinuose tai yra paplitusi rūšis net gyvenamosiose vietose. Filipinų subpopuliacija laikoma stabilia ir netgi didėjančia. Retikuliniai pitonai Mianmare yra reti. Kambodžoje gyventojų skaičius per dešimt metų taip pat sumažėjo ir sumažėjo 30–50%. Genties atstovai yra labai reti Vietname laukinėje gamtoje, tačiau daugybė individų buvo rasta šalies pietuose.

Įdomus faktas: tinkliniam pitonui nekyla pavojaus, tačiau, remiantis CITES II priedu, jo odos pardavimas ir pardavimas yra reguliuojami, siekiant užtikrinti išlikimą. Ši rūšis nėra įtraukta į IUCN raudonąjį sąrašą.

Manoma, kad pitonas išlieka įprastas pietinėse šios šalies dalyse, kur yra tinkama buveinė, įskaitant saugomas teritorijas. Turbūt mažėja Laose. Sumažėjimą Indokinijoje lėmė žemės konversija. Retikulinis pitonas vis dar yra gana dažna rūšis daugelyje Kalimantano sričių. Nepaisant intensyvios žvejybos, Malaizijos ir Indonezijos populiacijos yra stabilios.

Tinklinis pitonas nepaisant urbanizacijos, kur šios rūšies žvejyba draudžiama, ji išlieka įprasta Singapūre. Saravake ir Sabahas ši rūšis paplitusi tiek gyvenamuosiuose, tiek natūraliuose rajonuose, ir nėra duomenų apie populiacijos sumažėjimą. Problemas, kurias sukelia buveinių išvalymas ir eksploatavimas, galima kompensuoti padaugėjus aliejinių palmių plantacijų, nes gyvatės pythonas šiose buveinėse gerai gyva.

Žiūrėkite vaizdo įrašą: Learn Python - Full Course for Beginners Tutorial (Liepa 2020).

Pin
Send
Share
Send