თავი 2 | ფუნქციები და პირობითი ოპერატორები
რა არის ფუნქცია?!
ფუნქცია არის მრავალჯერადად გამოყენებადი კოდური მითითებების ერთიანობა მიმართული რაიმე დავალების შესასრულებლად. ფუნქციას შეუძლია აიღოს ინფუთი, პროცესირება გაუკეთოს მას და დაგვიბრუნოს აუთფუთი. ფუნქციები გვეხმარებიან ჩვენი კოდის დაორგანიზებაში და გამარტივებაში, აუმჯობესებენ კოდის წაკითვადობას და ამარტივებენ მის მოვლას გამართულად მუშაობისთვის.
რას ნიშნავს ფუნქციის განსაზღვრა?!
ფუნქციის განსაზღვრა ნიშნავს ფუნქციის აბსტრაქტული ჩანაწერის გაკეთებას def სიტყვის გამოყენებით, მაგალითად:
განსაზღვრის დროს ფუნქციის სახელწოდება შეგვიძლია ჩვენი სურვილისამებრ შევარჩიოთ თუმცა უმბობესია ფუნქციას რაიმე მეტყველი სახელი დავარქვათ იმისთვის, რომ იმან ვინც ჩვენს კოდს წაიკითხავს თვითონ ფუნქციის სახელწოდებიდანაც მიხვდეს თუ რას აკეთებს ეს ფუნქცია.
რა არის პარამეტრი?!
პარამეტრი არის ფუნქციის განსაზღვრის დროს ფუნქციისთვის გადაცემული ინფუთის სახელწოდება, მაგალითად:
ამ შემთხვევაში var სახელწოდება არის placholder-ივით ანუ დროებით ადგილი უჭირავს მნიშვნელობისთვის რომელიც ფუნქციას გადაეცემა გამოძახების დროს. var პარამეტრი არის ლოკალური ცვლადი რომელიც ჩანს მხოლოდ ფუნქციის სქოუფში ანუ სხვანაირად რომ ვთქვათ ფუნქციის სამოქმედო ტერიტორიის ფარგლებში.
რა არის ფუნქციის scope-ი?!
პითონში ფუნქციის სქოუფი არის ფუნქციის განმსაზღვრელი კოდის ხაზის ქვეშ მოქცეული კოდის ხაზები რომლებიც მარჯვნივ არიან წანაცვლებული ერთი ან მეტი იდენტაციით ისეთნაირად, რომ ,ზემოდან ქვემოთ, ყოველი მომდევნო ხაზი შვეულად ან მანამდელი ხაზის დონეზე დგას ან კიდევ უფრო მარჯვნივაა წანაცვლებული ერთი იდენტაციით. იდენტაციაში იგულისხმება, უბრალოდ, ერთი ან მეტი სივრცის გამოტოვება, მაგალითად:
პირველი და მეორე ინსტრუქციები ოთხი გამოტოვებით(თაბ ღილაკზე ერთხელ დაჭერა = ოთხ სივრცეს) ანუ ერთი იდენტაციით მარჯვნივაა წანაცვლებული, მესამე ინსტრუქცია ორი იდენტაციით, ხოლო მეოთხე სამით; შეგვიძლია მაგალითად მოვიყვანოთ ასეთი კონსტრუქცია:
განსაზღვრა ჩემი_ფუნქცია(პარამეტრი): ინსტუქცია_1(... პარამეტრი …) ინსტუქცია_2(... … …) ინსტუქცია_3(... … …) ინსტუქცია_3_1(... … …) ინსტუქცია_3_2(... … …) ინსტუქცია_3_2_1(... … …) … … … … … … … (… … …)
პარამეტრის სახელწოდების გამოყენებით შეგვიძლია ვიმოქმედოთ იმ მნიშვნელობაზე რომელიც ფუნქციის გამოძახების დროს გადაეცემა ფუნქციას არგუმენტად, მაგალითად:
ანუ, ფუნქცია აიღებს რაიმე მნიშვნელობას და ამ მნიშვნელობას გარდაქმნის, გარდასახავს, შეადარებს ან სხვა რაიმეს დამართებს იმ ინსტრუქციების გათვალისწინებით რაც ჩვენ მას სქოუფში გავუწერეთ პარამეტრთან დაკავშირებით და დააბრუნებს შედეგს return-ის გამოყენებით, ამ შემთხვევაში ლაპარაკია "return instruction_3" ხაზზე.
რა ნიშნავს ფუნქციის გამოძახება და რა არის არგუმენტი?!
ფუნქციის გამოძახება ნიშნავს ფუნქციის სახელწოდების კოდში გაწერას ფუნქციის მექანიზმით სარგებლობის მიზნით, მაგალითად:
და არგუმენტი არის ფუნქციის გამოძახების დროს ფუნქციისთვის გადაცემული მნიშვნელობა, ამ შემთხვევაში ესენი არიან "2" da ინფუთიდან მოსული მნიშვნელობა, ანუ ის რაც იუზემა ინფუთს გადასცა.
რა არის ლოკალური და გლობალური ცვლადი?!
ფუნქციისთვის(პარამეტრი) ან/და ფუნქციის სქოუფში გაწერილი ცვლადი(ები) არის(არიან) ლოკალური ცვლადები ანუ ისინი ჩანან მხოლოდ მოცემული ფუნქციის სქოუფში და სხვაგან არსად, მაგალითად:
ამ შემთხვევაში var და num ცვლადები არიან ლოკალური ცვლადები რაც ნიშნავს იმას, რომ "my_function()" ფუნქციის სხეულის-სქოუფის გარეთ მათ ვერ გამოვიყენებთ. გლობალური ცვლადი არის ცვლადი რომელიც გლობალურ სივრცეშია განსაზღვრული ანუ სივრცეში რომელიც არც ერთ სქოუფში არ ხვდება და შესაბამისად ისინი ყველგან ჩანან, მაგალითად:
ამ შემთხვევაში user_input არის გლობალურ სივრცეხი განსაზღვრული ცვლადი რომელიც განსაზღვრული ფუნქციების სქოუფებში ჩანს.
ჩაშენებული ფუნქცია და დასახელებული პარამეტრები?!
ჩაშენებული ფუნქციები პითონში არიან ფუნქციები რომლებიც სხვა დეველოპერებმა განსაზღვრეს და ჩააშენეს ისე რომ ჩვენ შეგვიძლია უბრალოდ გამოვიძახოთ ისინი და გამოვიყენოთ ჩვენი მიზნებისთვის, მაგალითად:
დასახელებული ცვლადი არის ცვლადი რომელიც ფუნქციას გაწერილი აქვს რაიმე დეფაულტ მნიშვნელობაზე და ჩვენ ჩვენ საჭიროების მიხედვით შეგვილია ჩვენი სურვილისამებრ ჩავანაცვლოთ ან საერთოდ გავაუქმოთ დეფაულტად გაწერილი მნიშვნელობა, მაგალითად:
აუთფუთი იქნება:
ხოლო მაგალითად:
აუთფუთი იქნება:
ანუ print() ფუნქციის დასახელებული პარამეტრებია sep და end ხოლო მათთვის გაწერილი მნიშვნელობებია " " და "\n" შეასბამისად
როგორი ფუნქციები შეგვხვდება დავალებებში?!
1 - ფუნქცია რომელიც ღებულობს ინფუთს და აბრუნებს აუთფუთს
კვადრატული ფუნქცია ინფუთად აიღებს მთელ რიცხვს რომელსაც გაამრავლებს საკუთარ თავზე და დაგვიბრუნებს კალკულაციის შედეგს
2 - ფუნქცია რომელიც ღებულობს ინფუთს და არაფერს აბრუნებს
3 - ფუნქცია რომელიც არ ღებულობს ინფუთს და აბრუნებს აუთფუთს
4 - ფუნქცია რომელიც არც ინფუთს ღებულობს და არც აუთფუთს აბრუნებს
რა არის პირობითი ოპერატორი?!
პირობითი ოპერატორი არის საშუალება, რომ კოდის დონეზე გავწეროთ გადაწყვეტილების მიღების ლოგიკა იმასთან დაკავშირებით, რომ კოდის ცალკეული ნაწილი აღსრულდეს თუ არა, მაგალითად:
პითონური ჩანაწერის კონსტრუქცია იქნებოდა:
თუ რაიმე პირობა ან პირობები განხორციელდება მაშინ უნდა აღსრულდეს შესაბამისი ინსტრუქცია ან ინსტრუქციები, მაგალითად:
ასეთი კონსტრუქციის შემთხვევაში იგულისხმება, რომ პირობებიდან მოცემულ ჯერზე მხოლოდ ერთი შეიძლება რომ შესრულდეს, ანუ პირობები ერთმანეთის ალტერნატივები არიან.
აღნიშნული კონსტრუქცია კერძო შემთხვევებში შეიძლება ჩანაცვლებული იყოს or ოპერატორის გამოყენებით ამ კონსტრუქციით:
იმის გათვალისწინებით, რომ შეიძლება ყველა პირობა, მათი რაღაც ნაწილი ან მათგან ერთი მაინც შესრულდეს და ნებისმიერ შემთხვევაში აღსასრულებელი ინსტრუქცია იგივეა, ლაპარაკია if ოპერატორის პირობებზე.
or ოპერატორის and ოპერატორით ჩანაცვლების შემთხვევაში იგივე კოსტრუქციის ლოგიკა შეიცვლება ისეთნაირად, რომ if ოპერატორის უკლებლივ ყველა პირობა უნდა შესრულდეს, რომ შესაბამისი ინსტრუქცია განხორციელდეს, მაგალითად:
not ოპერატორი საშუალებს გვაძლევს, რომ პირობის არ განხორციელება ჩაითვალოს პირობის დადგომად. წინარე კონსტრუქციის ჩანაცვლება შეგვიძლია ამ კონსტრუქციით:
თუ რამოდენიმე პირობა ერთმანეთისგან დამოუკიდებლად ერთდროულად შეიძლება დადგეს და ამიტომ მათი ცალ-ცალკე შემოწმებაა საჭირო შეგვიძია ასეთი კონსტრუქცია გამოვიყენოთ:
აღსანიშნავია, რომ else ოპერატორის მეექვსე ინსტრუქცია მხოლოდ იმ შემთხვევაში აღსრულდება თუ არ აღსრულდება მეხუთე პირობა, დანარჩენ პირობებთან მას კავშირი არ აქვს.