19 септември 2008

"Python: червеното хапче" preview II

Вчера бачках доста до късно и свърших с първата част на туториъла. Както може би някой от вас знаят, тази първа част е базирана изцяло на блог постовете за python, които пуснах тук, някой от тях бяха напълно пренаписани, някой само леко редактирани(най леко редактирах и най популярния пети пост). Добавих и още една глава, за модулите и импортирането, първата и версия, която вчера написах със едва отворени очи, сега ви предоставям за четене, не знам дали няма да я променя до деня в който излезе целия туториъл, всъщност, този ден все още е неизвестен, защото все още не съм сигурен колко време ще ми отнеме да напиша втората част. Както може би сте разбрали от предишни постове, тя ще ви учи как да чертаете на екрана с модула turtle, и за това беше добра идея да добавя и малко информация за модулите и импортирането, вместо да го обяснявам във втората част. Ето и самата глава:



В програмирането обикновено когато програмата стане достатъчно голяма, тя започва да се разделя на отделни модули с логика. Тези модули са отделни файлове със код. Тези същите файлове които завършват с .py. Понякога имаме нужда от допълнителни инструменти(функции и класове) и ще открием че някой вече е написал нещо което ще ни свърши работа. Вместо да пишем свои собствени инструменти, няма да е лошо ако можехме да вземем на готово чужди такива. Python идва в комплект със доста голямо количество библиотеки и модули, които можем да използваме, също така понякога ние самите ще си напишем библиотеки под формата на други модули, и ще искаме да можем използваме функциите и класовете от тях и в новата си програма. За целта ще можем да използваме конструкцията import. Нищо сложно, просто създаваме една функция, да речем от горните примери функцията square в папката ви C:\mypython\:

square=lambda x: x*x

Този код го запишете в файла square.py. Отворете command prompt-а и напишете следната команда:

cd c:\mypython\


С тази команда се придвижвате към директорията в която е вашия файл. След това стартирайте python като напишете следното за уйндолс:

c:\python25\python.exe


А за Линукс е просто python.
Сега можете да импортирате файла си със командата import:

>>>import square


Сега имаме достъп до имената във square, там има само едноименната функция:

>>>square.square(4)
16


Сега ако искаме да добавите функция във файла си, и после да я имате в интерпретатора, може да използвате функцията reload() която презарежда импортирани файлове. Да речем че добавим следната функция към файла ни:

def sumofsquares(x,y):
return square(x)+square(y)


Сега в интерпретатора пишем:

>>>reload(square)
>>>square.sumofsquares(4,4)
32


Това е ок, но да речем че искаме да импортираме само една от двете функции, можем да го направим по следния начин:

>>>from square import square
>>>square(4)
16


Можем също така да импортираме неща и да им даваме имена:

>>>from square import square as sq
>>>sq(4)
16


Можете също така да импортирате всички имена, без да трябва по късно да осъществявате достъп до тях със операторът '.', просто пишем:

>>>from square import*
>>>square(4)
16
>>>sumofsquares(4,4)
32


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

Няма коментари: