Преди известно време бях запознат с това, което се превърна в моят # 1 предпочитан програмен / скриптов език: Python. Трудно е разработчикът на език да излезе с нещо, което е едновременно мощен и лесен за писане, нещо, което тече естествено и ви позволява да се съсредоточите върху това, което е важно във вашия код. Питън прави това прекрасно. Той прави точно правилните предположения, позволявайки ви да се съсредоточите повече върху това, което трябва да направи вашата програма, вместо точно как трябва да бъде направено. Не се безпокойте за управлението на паметта, променливото типизиране или за онези, които са заглушени с точка и запетая, просто не забравяйте логиката на приложението си.

Python отнема доста големи отклонения от някои от по-традиционните езици като C / C ++, като се вписва по-добре с динамичните езици като Ruby, Smalltalk и дори Javascript. Способността бързо и лесно да завършите сложните задачи в Python е била дори предмет на някои страхотни уеб комикси.

Забележка - Python е интерпретиран език, преводачът може да бъде изтеглен тук. Всички примери в това ръководство са написани за Python 3.0, който НЕ е изцяло обратно съвместим с предишни версии. Ако имате проблеми с показването на примерите, проверете версията на Python.

Изпълнявайте примерите

Ще включа различни примери в това ръководство. След като вече сте инсталирали Python 3 интерпретатора (уверете се, че е Python 3), кодът може да се изпълнява по два начина:

Сценарист

Можете да копирате / поставите пълния текст на примерния код в текстов файл. Файловете на Python обикновено завършват с .py. Отворете командния ред и стартирайте изпълнимия файл на Python, последван от името на файла. На моята Linux машина, тичам:

 python3.0 myfile.py 

Това трябва да е приблизително еднакво за Windows и Mac, въпреки че може да се наложи да посочите пълния път към интерпретатора на Python, като например

 C: \ Python30 \ python.exe myfile.py 

Интерактивен преводач

Python може да се изпълнява и в интерактивен режим, където можете да въвеждате команди един по един, за да видите как реагират. Това може да бъде много полезно при отстраняване на проблеми или при изпробване на нови неща. Изпълнявайте изпълнимия Python сам, без никакъв скриптов файл, и той ще отвори интерактивния промпт.

Ctrl-D ще излезе от преводача.

Празно

Един от най-необичайните аспекти на Python е неговото използване на бели полета за обозначаване на блокове от код. Вместо да започвате и прекратявате, или групирате по двойки, Python използва размера на вдлъбнатината, за да разкаже как да се справя с блоковете на кода за примка и такива. На много хора, идващи от други езици за програмиране, това изглежда като лудост. След като свикнете с идеята, обаче, тя става съвсем естествена и принуждава вашия код да бъде ясен и четим. Ние всички отрязваме кодови блокове така или иначе (или поне трябва), така че просто има смисъл в езика да разбере, че изявленията, всички подредени заедно, са част от същия блок.

Като допълнителна полза, Python не е привързан към това колко искате да отмествате, или дори да предпочитате раздели или интервали. Можете да използвате раздел, интервал, два интервала, 137 интервала, Python не ви е грижа. Всичко, което трябва да направите, е да сте последователни. Той ще провери кода ви и ще види "Първият блоков код е разчленяван от 4 интервала, така че аз ще се предположи, че един блок е вмъкнат от още 4 интервала" или какъвто и да е случай. Докато сте съгласни с начина, по който подреждате кода си, Python е достатъчно гъвкав, за да го разберете. Следният пример може да ви помогне да изчистите нещата.

 1 2 3 4 5 
 x = 0, докато x <10: print (x) x + = 1 print ("Всички направени") 

Разбивка на кода: Кръговата линия казва на Python да изпълни следния блок код, стига да са налице определени условия. В този случай условието е, че х е по-малко от 10. Той ще продължи да прекъсва този блок до х хитовете 10. "x + = 1" се превежда на "x = x + 1" или "направи x по-голям с 1 ". Забележете, че финалната линия не се изпълнява, докато не приключи цикълът. Python вижда лигираните линии и ги третира като група от кодове, които се изпълняват при всяко пътуване през цикъла на време . Последната линия не е отместена с останалите, така че Python не действа върху нея, докато не завърши цикълът.

Динамично въвеждане

Python не изисква да определяте какъв тип данни ще бъде в променлива. Можете да поставите цяло число, низ, десетичен знак, всичко, което искате в променлива, без да трябва да кажете на Python какво представлява. Python ще разбере, въз основа на това, което зададете, какъв тип данни трябва да има тази променлива. Следният пример трябва да покаже:

 1 2 3 4 5 6 7 8 
 x = 0 print ("x е a:", тип (x)) x = 3.14 отпечатване ("x е a: x)) x = [1, 2, 3, 4] печат ("x е a:", тип (x)) 

Което ни дава изхода по-долу

Структури на данни

Трите структури от данни, които най-често ще използвате в Python, са

  • списъци
  • кортежи
  • речници

списъци

са много подобни на масиви на някои други езици. Те са едномерна поредица от елементи (макар че технически можете да им дадете колкото се може повече размери, колкото искате). Всеки елемент в този списък може да бъде променен, преместен и премахнат по желание, без да се налага да се пресъздава списъкът и без да се променят останалите елементи. Списъците могат да съдържат всеки обект на Python, независимо дали е число, низ, дори и други списъци. Следният код показва някои основни приложения на списъците.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
 #create списък с няколко примерни елемента myList = [1, 2, 3, 4, 5] #len () дава броя на броя елементи, които списъкът ни задържа ("myList has", len (myList), "items . ") # Елементите в списъка не трябва да бъдат от същия тип myList.append (" six ") myList.append (" седем ") myList.append (8) # Прибавихме три нови елемента към ("myList вече има", len (myList), "items.") # Сега нека видим елемент номер 0 (първият елемент) print ("първи елемент:" myList [0] ("четвъртия елемент:", mylist [3]) # След това извадете последния елемент от списъка за отпечатване ("и завършва с", myList.pop ()) print ("myList now" myList), "items.") # И вижте какво сме правили отпечатване ("Пълното съдържание е:", myList) 

кортежи

Аз няма да покривам много неща, тъй като те няма да бъдат използвани от нашата примерна програма и те са подобни на списъците по много начини. Думите, като списъци, са серия от елементи, групирани заедно. Разликата е, че трите не могат да се променят. Не можете да правите промени на място в елементите в дадена тона, трябва да пресъздадете отново n-тона. Това означава, че няма "добавяне" или "поп" или други неща, които директно правят промени в съдържанието на плика. Ако това помага, можете да мислите за tuples като списък само за четене (макар че това наистина не е много точно).

речници

Тези, обичам. Когато бях за пръв път научен за речниците, си спомням да мисля нещо по следния начин: "Ами ... Мисля, че това би било полезно ... понякога". За една седмица ги използвах всеки шанс, който имам.

В Python речниците са ключови: стойността на двойките. Това е като списък, с изключение на това, че всеки елемент има две части, ключ и стойност. В следващия пример ще направя речник, който да съдържа информация за себе си.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
 myDict = {} # Основна стойност myDict ["Име"] = "Джош" myDict ["Занимание"] = "Computer Geek" myDict ["FavFood" "Всичко освен B-52" MyDict ["Heroes"] = "Том Уейтс, Кърт Вонегът, SpaceBat" myDict ["FavNumber"] = 3.141592 myDict [42] "myDict [" Име "]) отпечатайте (" Моите герои: ", myDict [" Heroes "]) (" Моят любим номер ", myDict [" FavNumber " ", myDict [42]) print () # Сега ще променя любимия си номер без да създам # цял нов речник myDict [" FavNumber "] + = 100 print (" ]) 

Няколко неща трябва да са ясни от примера. Първо, речниците могат да смесват и да съвпадат с данни от всякакъв вид. Вашите ключове и ценности могат да бъдат от всичко. Можете дори да станете наистина луди и да поставите неща като функции в речниците, но това е извън обхвата на това ръководство.

Второ, речниците са променливи. Можете да добавяте и премахвате елементи в движение, без да пресъздавате речника или да повлиявате на други елементи.

Ако все още не сте сигурни за полезността на речниците, помислете за използването им, за да проследявате настройките на потребителя. Може да имате речник, наречен настройки и да съхранявате неща като потребителско име, IP адрес и резолюция на екрана. Всеки път, когато трябва да препратите тези данни, можете просто да го издърпате от настройките ["username"] или от който и да е друг ключ, който сте посочили.

Донеси всичко вкъщи

Сега ще стигнем до реалните действия, като създадем полезна програма Python 3.0. Това, което тази програма ще направи, е да вземете число, представляващо пари, и да ви кажа колко джобни промени ще направят тази сума. Това е доста общо упражнение за кодиране и е добър начин да демонстрираме представените досега понятия.

Сега трябва да ви кажа, че тази програма НЕ ще бъде написана по "най-добрия" начин, моята цел е да я напиша с помощта на най-основните концепции и възможни операции. Има няколко "по-добри" начина да напишете това, като използвате функциите и оператора на модула, включително проверка на грешки, но тази версия трябва да е доста лесна за разбиране.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 
 # Вземете сумата на сумата в брой = вход ("Въведете сумата в брой в долари: $") # Четенето от въвеждането на текст поема текст, така че да преобразувате # към десетично и множество по 100, за да можем да броим пенис (по-проста математика по този начин) float (total) * 100 #create речник, за да задържим промените в стойностите change = {"quarters": 0, "dimes": 0, "nickels": 0, "pennies": 0} #Loop докато паричните суми> 0: #Сместете всяка монета от общата сума, добавете 1 към броя # за всяка монета и рестартирайте цикъла след като преброите, ако петдесетте = = 25: променят ["четвърти"] + = 1 стотинки - = 10: промяна ["dimes"] + = 1 стотинки - = 10 продължаване на елитни пари> = 5: промяна ["nickels"] + = 1 pennies = penny = 0 # Накрая, отпечатайте нашите резултати отпечатайте ("Q:", променете ["quarters"]) print ("D:", change ["dimes"]) ) отпечатай ("P:", променете ["стотинки"]) 

Разбивка на кода: Използваме вход, за да получим сума от командния ред. Python приема, че това, което се въвежда, е низ от текст, за разлика от число, така че трябва да му кажем да преобразува този вход в използваем номер. Бихме могли да оставим номера сам (т.е. 15.95), но вместо това го превърнахме в пари (умножихме по 100), за да направим математиката по-проста, за да не се притесняваме за десетични точки.

След това създаваме речник, който да държи резултатите от нашите изчисления. Ако това беше по-сложна програма, бихме могли да предадем този речник на нашите функции, класове и т.н., без да се безпокоим да следим отделни променливи за всеки тип монета.

След това идва истинската работа - деянието на разделянето на парите ни в отделни монети. Тази програма използва моментна линия, за да запази колоезденето, докато нямаме никакви пари, останали от първоначалния ни вход. Всяко пътуване през цикъла разглежда количеството пари, изважда най-голямата монета, което може, и рестартира цикъла. Вместо да правим изваждания отново и отново, тази програма вероятно ще бъде много по-ефективна, ако използвахме оператора на модула, но изваждането е по-лесно разбираемо.

Щом приключим с цикъла, остава само да покажете резултатите си.

Питон е способен да се занимава повече, отколкото бих могъл да покрия тук, но се надявам, че успях да покажа основните неща за това как работи и как може да се използва бързо и лесно за създаване на инструменти, които биха били много по-сложни в по-малко интуитивен език.

В случай, че някой е толкова любопитен, колкото да изразя правилно "небето", имах достатъчно късмет, за да имам възможността да попитам самия Гуидо ван Россум, ако е "купувач" или "купчинка", и той даде донякъде неудовлетворителен отговор - Това е каквото искаш.