You are on page 1of 13

პროგრამირების საწყისები

Python
ლ ე ქ ცია 1 4 : მ ოდუ ლ ე ბ ი და პ ა კ ე ტ ე ბ ი – ი ნ ს ტ რუ ქ ცი ე ბ ი IM P O R T და FR O M . მ ოდუ ლ ი ს მ ოძ ე ბ ნ ა
და ხ ე ლმ ე ორე დ ჩ ა ტ ვ ი რთვ ა .

P y pi - პ ი თონ ი ს პ ა კ ე ტ ე ბი ს რე პ ოზ ი ტ ორი ს მ ი მ ოხ ი ლ ვა . პ ა კ ე ტე ბ ის ჩ ა მ ოქ ა ჩ ვა და
ს ა ი ნ ს ტ ა ლ აც ი ო პ ა კ ე ტ ებ ის გა მ ზ ა დე ბ ა .

ლიკა სვანაძე
lika.s v anadze@bt u.edu.ge
მოდულები -­‐ Modular   programming
§ მოდულური პროგრამირება გულისხმობს პროგრამის დაყოფას განცალკევებულ
მცირე ქვე-ამოცანებად (მოდულებად). მისი უპირატესობებია:
§ სიმარტივე – თითოელი მოდული წარმოადგენს კონკრეტული მცირე ზომის პრობლემის
შესაბამის ალგორითმს. შესაბამისად, მასში ცვლილებების განხორციელება გაცილებით
მარტივადაა შესაძლებელი.
§ რამდენიმე პროგრამისტის მუშაობის შემთხვევაში, ცალკეული მოდულებზე მუშაობა
გაცილებით უფრო მარტივი და კომფორტულია.
§ ერთხელ დაწერილი მოდული შესაძლებელია მარტივად იყოს გამოყენებული
რამდენიმეჯერ პროგრამის წერის ნებისმიერ ადგილას.

§ ფუნქციები, მოდულები და პაკეტები უზრუნველყოფენ python-­‐ში პროგრამის


მოდულებად (ნაწილებად) დაყოფას.

§ პითონში არსებული ჩაშენებული მოდულები დაწერილია python-­‐ის ენაზე და


შესაბამისად მისი ფაილის გაფართოებაა .py ან დაწერილია C პროგრამირების
ენაზე.

09.01.20 lika.svanadze@btu.edu.ge 2
Module  (მოდული)
მოდული შესაძლოა იყოს როგორც ჩაშენებული (built-­‐in), ასევე მომხმარებლის
მიერ შექმნილი.

ჩაშენებული მოდულები შეიცავს ცვლადებს და ფუნქციებს. მოდულში არსებული


ცვლადების და ფუნქციების ნახვა შესაძლებელია dir ან help ფუნქციის
საშუალებით. შეამოწმეთ შემდეგი ბრძანებები კონსოლში:

>>>  import  math >>>  import  math


>>>  help(math) >>>  dir(math)

09.01.20 lika.svanadze@btu.edu.ge 3
ჩაშენებული მოდულები
რიცხვითი და მათემატიკური მოდულები:
§ numbers  — Numeric  abstract  base  classes        
§ math  — Mathematical  functions      
§ cmath — Mathematical  functions   for  complex  numbers        
§ decimal  — Decimal  fixed  point  and  floating  point   arithmetic        
§ fractions  — Rational  numbers        
§ random  — Generate  pseudo-­‐random   numbers        
§ statistics  — Mathematical  statistics  functions
ფუნქციური პროგრამირების მოდულები:
§ itertools — Functions  creating  iterators  for  efficient  looping        
§ functools — Higher-­‐order   functions   and  operations  on  callable  objects        
§ operator  — Standard  operators  as  functions
§ sys მოდული - System-­‐specific  parameters  and  functions
§datetime -­‐ თარიღის და დროის ტიპის ობიექტები და მასთან სამუშაო ფუნქციები

§ დეტალური ინფორმაცია თითოეულ მოდულზე იხილეთ:


https://docs.python.org/3/library/

09.01.20 lika.svanadze@btu.edu.ge 4
sys  მოდული - მოდულების ძებნა
sys – System-­‐specific  parameters  and  functions
§ sys  მოდულის ძირითადი ელემენტებია (ცვლადები და არა ფუნქციები):
§ sys.modules -­‐ ჩაშენებული მოდულების ჩამონათვალი და შესაბამისი
ფაილების ადგილმდებარეობა
§ sys.path -­‐ აბრუნებს ინფორმაციას მოდულების ადგილმდებარეობის შესახებ
(ბილიკებს).

09.01.20 lika.svanadze@btu.edu.ge 5
მოდულის შექმნა
• მოდულის შექმნა ხდება სტანდარტული py ფაილში. მოდულის სახელს
წარმოადგენს შესაბამისი py ფაილის სახელს.

• შექმნილი მოდულის გამოძახება სრულდება ჩაშენებული მოდულების გამოძახების


მსგავსად import   ბრძანების მეშვეობით სხვა py ფაილიდან.

• გაითვალისწინეთ რომ მოდულის ფაილი მოთავსებული უნდა იყოს:


1. იმავე დირექტორიაში (საქაღალდეში) სადაც მოთავსებულია ფაილი რომელშიც ხდება
მოდულის იმპორტი
2. ან მოათავსეთ შექმნილი მოდულის ფაილი რომელიმე სისტემურ დირექტორიებში,
რომელშიც მოთავსებულია სხვა ჩაშენებული მოდულებიც. ადგილმდებარეობა
შეგიძლიათ დააზუსტოთ sys.path ბრძანების მეშვეობით. გაითვალისწინეთ, რომ უნდა
გქონდეთ დირექტორიაზე წვდომა (ადმინისტრატორის უფლებები), იმისათვის რომ
სისტემურ საქაღალდეში მოათავსოთ ფაილი.
3. ან მოათავსოთ მოდულის ფაილი ნებისმიერ დირექტორიაში, თუმცა აღნიშნული
დირექტორია უნდა დაემატოს sys.path სიაში. (მაგ.
sys.path.append('C:\Users\mymodules.py')  ბრძანების მეშვეობით)

09.01.20 lika.svanadze@btu.edu.ge 6
მოდულის ხელმეორედ ჩატვირთვა

იმ შემთხვევაში თუ მოდული ჩატვირთულია/იმპორტირებულია სხვა ფაილში და


შემდგომ განხორციელდა მოდულის ფაილის ცვლილება, აუცილებელია
მოდულის ხელმეორედ ჩატვირთვა reload ფუნქციის გამოყენებით (reload
ფუნქცია ეკუთვნის importlib მოდულს). reload ფუნქციას არგუმენტად
გადაეცემა მოდულის სახელი.

import   importlib
importlib.reload(mod)

09.01.20 lika.svanadze@btu.edu.ge 7
პაკეტები
§ დიდი აპლიკაციების დეველოპმენტის დროს საჭირო ხდება დიდი რაოდენობის
მოდულებთან მუშაობა. ასეთ შემთხვევაში შესაძლოა სხვადასხვა მოდულს ან სხვადასხვა
მოდულის ფუნქციებს ერთნაირი სახელი ერქვას. შესაბამისად, საჭიროა მათი
ორგანიზებულად შენახვა რათა გამარტივდეს მათთან მუშაობა და ასევე თავიდან
ავირიდოთ ფაილებსა და ცვლადებს შორის კონფლიქტი.
§ პაკეტების მეშვეობით შესაძლებელია მოდულების იერარქიულად დალაგება. მოდულის
იმპორტისას ჯერ ეთითება პაკეტის სახელი,  წერტილი და შემდეგ მოდულის სახელი
მაგ. import  <package_name>.<module_name>  
ან from  <package_name>  import  <module_name>  

§ იმისათვის რომ პაკეტი განსხვავდებოდეს სტანდარტული


დირექტორიისგან, პაკეტის შესაბამის საქაღალდეში უნდა იყოს
განთავსებული __init__.py ინიციალიზაციის ფაილი.  
სიმარტივისთვის, __init__.py შესაძლოა იყოს ცარიელი ან მასში
მოთავსებული იყოს ინიციალიზაციისთვის საჭირო მოქმედებები,
რომელთა გაშვება ხდება ავტომატურად პაკეტის იმპორტის
დროს.
შენიშვნა: python  3 ვერსიაში აღარ არის საჭირო __ init__.py ფაილის დამატება

09.01.20 lika.svanadze@btu.edu.ge 8
პაკეტის მოდულების ჩატვირთვა
პაკეტის მოდულის ჩატვირთვა და მოდულის კომპონენტების გამოძახება
შესაძლებელია შემდეგნაირად:

import   pkg.mod1
k  =  pkg.mod1.avg(3,6)

from  pkg import mod1


k  =  mod1.avg(3,6)

from  pkg.mod1   import avg


k  =  avg(3,6)

09.01.20 lika.svanadze@btu.edu.ge 9
PyPI – Python Package Index (1)
§ PyPI წარმოადგენს პითონის პაკეტების საძიებელს, სადაც დეველოპერები
ანთავსებენ და უზიარებენ თავიანთ პროექტებს სხვებს.

§ ოფიციალური ვებ გვერდი: https://pypi.org/

§ ნებისმიერს შეუძლია ატვირთოს თავისი პაკეტი საიტზე რომელიც ხელმისაწვდომი


გახდება სხვებისთვის ან ჩამოტვირთოს სხვისი შექმნილი პაკეტები

§ პაკეტების გადმოსაწერად და დასაინსტალირებლად გამოიყენება pip  პაკეტების


მენეჯერი, რომლის ოფიციალური ვებ-საიტია http://pip-­‐installer.org

§ python   3.4  ვერსიიდან დაწყებული ინტერპრეტატორს მოყვება pip  მოდული,


რომელიც შეგიძლიათ შეამოწმოთ ტერმინალში შემდეგი ბრძანებით pip  –version  

§ იმ შემთხვევაში თუ არ არის დაყენებული, http://pip-­‐installer.org საიტზე, Installation  


მენიუდან, გადმოწერეთ pip-­‐ის საინსტალაციო ფაილი get-­‐pip.py. ფაილი
შეგიძლიათ ასევე გადმოწეროთ ტერმინალის (cmd -­‐ command  prompt)-ის
მეშვეობით შემდეგი ბრძანებით: curl  https://bootstrap.pypa.io/get-­‐pip.py -­‐o  get-­‐pip.py

09.01.20 lika.svanadze@btu.edu.ge 10
PyPI – Python Package Index (2)
§ საინსტალაციო გაუშვით cmd-­‐ს მეშვეობით შემდეგნაირად:
§ cd  ბრძანების მეშვეობით გადადით იმ დირექტორიაში სადაც გაქვთ
საინსტალაციო ფაილი
§ გაუშვით ბრძანება: python3 get-­‐pip.py

§ https://pythonwheels.com/ საიტზე განთავსებულია ტოპ 360 ყველაზე


ხშირად გადმოწერილი პაკეტი

09.01.20 lika.svanadze@btu.edu.ge 11
პაკეტის ინსტალაცია
§ ნებისმიერი პაკეტის საინსტალაციოდ საჭიროა ტერმინალში შესაბამისი ბრძანების
გაშვება.
§ მაგალითად dateutil პაკეტის გადმოსაწერად, უნდა დავაკოპიროთ შესაბამისი
ბრძანება https://pypi.org/project/python-dateutil/ გვერდიდან და გავუშვათ
ტერმინალის მეშვეობით (შეგიძლიათ გამოიყენოთ როგორც cmd ასევე Python
terminal Pycharm-ში). ბრძანებას აქვს შემდეგი სახე:
pip  install   python-­‐dateutil
§ პაკეტის წარმატებით დაინსტალირების შემდეგ, იგი განთავსდება პაკეტების
დირექტორიაში და მასში არსებული სასურველი მოდულის გამოძახება
შესაძლებელია import ბრძანებით.

from  dateutil.easter import  *


print(easter(2019,2))
§ პაკეტების ინსტალაციის შესახებ დეტალური ინფორმაცია:
https://packaging.python.org/tutorials/installing-packages/

09.01.20 lika.svanadze@btu.edu.ge 12
პროექტის პაკეტის ატვირთვა
PyPI-­‐ზე შესაძლებელია ატვირთოთ თქვენი შექმნილი პაკეტი, რომელიც
ხელმისაწვდომი იქნება ყველასთვის.
პროექტის პაკეტის ატვირთვის ინსტრუქცია:
https://packaging.python.org/tutorials/packaging-­‐projects/

09.01.20 lika.svanadze@btu.edu.ge 13

You might also like