Saturday, June 13, 2015

თავი 4 (4,8 - 4,9)



4.8 განხორციელებათა დინება


იმისთვის რომ დარწმუნდე ფუნქცია განსაზღვრულია მის პირველ გამოყენებამდე, თქვენ უნდა იცოდეთ თანმიმდევრობა, რომლითაც ბრძანებები შესრულდა, რომელსაც ეძახიან განხორციელებათა დინებას.
განხორციელება ყოველთვის იწყება პროგრამის პირველ ბრძანებაში. ბრძანებები სრულდება სათითაოდ, ზემოდან ქვემოთ.
ფუნქციის განსაზღვრება პროგრამის განხორციელებათა დინებას არ ცვლის , მაგრამ დაიმახსოვრე, რომ ბრძანებები ფუნქციის შიგნით არ განხორციელდება სანამ ფუნქცია გამოძახებულია.
ფუნქციის გამოძახება არის როგორც განხორციელებათა დინებიდან გადახვევა. შემდეგ ბრძანებაზე გადასვლის ნაცვლად, დინება გადადის  ფუნქციის სხეულზე და იქ ახორციელებს ყველა ბრძანებას და შემდეგ ბრუნდება იქ სადაც გაჩერდით.
ეს ჟღერს საკმაოდ მარტივად, სანამ გაგახსენდება, რომ ერთ ფუნქციას შეუძლია დაუძახოს სხვა ფუნქციას, სანამ ერთი ფუნქციის შუაშია, პროგრამას შეიძლება მოუხდეს განახორციელოს ბრძანება სხვა ფუნქციაში, მაგრამ სანამ ახალი ფუნქცია ხორციელდება, პროგრამას შეიძლება ჰქონდეს გასახორციელებელი კიდევ ახალი ფუნქცია.
საბედნიერო პითონი კარგად აკონტროლებს თუ სადაა და ყოველ ჯერზე, როცა ფუნქცია სრულდება, პროგრამა ბრუნდება იქ, სადაც ფუნქციის გამოძახების დროს იყო. პროგრამის ბოლოში როცა გადის - სრულდება.
რა არის მორალი ამ ზღაპრის? პროგრამას როცა კითხულობ, ყოველთვის არ გინდა თავიდან ბოლომდე წაკითხვა და ხანდახან უფრო აზრიანია მიჰყვე განხორციელებათა დინებას.

4.9 პარამეტრები და არგუმენტები

ზოგიერთ ჩაშენებულ ფუნქციას (რომელიც ვნახეთ)   ესაჭიროება არგუმენტები. მაგალითად; როცა იძახებ math.sin, შეგყავს  ციფრი როგორც არგუმენტი. ზოგი ფუნქცია  იღებს ერთზე მეტ არგუმენტს. math.pow იღებს ორს - ფუძეს და ხარისხის მაჩვენებელს. ფუნქციის შიგნით ეს არგუმენტები გატოლებულია ცვლადებს, რომელსაც ეძახიან პარამეტრებს. აქაა მაგალითი მომხმარებლის გაკეთებული ფუნქციის რომელსაც აქვს არგუმენტი:

def print_twice(bruce):
      print bruce
      print bruce

ეს ფუნქცია არგუმენტს უტოლებს ცვლადს სახელად  bruce. როცა ფუნქცია გამოძახებულია, ბეჭდავს პარამეტრის (რაც არ უნდა იყოს )მნიშვნელობას ორჯერ.
ეს ფუნქცია მუშაობს ყველა მნიშვნელობასთან რაც შეიძლება რომ დაიბეჭდოს.

>>> print_twice('Spam')
Spam
Spam
>>> print_twice(17)
17
17
>>> print_twice(math.pi)
3.14159265359
3.14159265359

ჩაშენებულ და მომხმარებლის გაკეთებულ ფუნქციებში იგივე წესებია, ასე რომ შეგიძლია გამოვიყენოთ გამოსახულება როგორც არგუმენტი:

print_twice:
>>> print_twice('Spam '*4)
Spam Spam Spam Spam
Spam Spam Spam Spam
>>> print_twice(math.cos(math.pi))
-1.0
-1.0

არგუმენტი შეფასებულია ფუნქციის გამოძახებამდე, ამ მაგალითში 'Spam '* 4 და math.cos(math.pi) გამოანგარიშებულია მხოლოდ ერთხელ.

ასევე შეგიძლია გამოიყენო ცვლადი როგორც არგუმენტი

>>> michael = 'Eric, the half a bee.'
>>> print_twice(michael)
Eric, the half a bee.
Eric, the half a bee.

ცვლადის სახელს, რომელიც არგუმენტის მაგივრად შევიტანეთ (michael)
არაფერი აქვს საერთო პარამეტრის სახელთან (bruce). არ აქვს აზრი თუ რა იყო ადრე მნიშვნელობა;  აქ print_twice ფუნქციაში ყველაფერს ვეძახით bruce -ს .