פייתון/פייתון גרסה 2/הספריה הסטנדרטית


פרק זה לוקה בחסר. אתם מוזמנים לתרום לוויקיספר ולהשלים אותו. ראו פירוט בדף השיחה.



פייתון מאפשרת שימוש בספריות - קבצים המכילים קטעי קוד המוכנים לשימוש. אנו נתמקד בפרט בספריה הסטנדרטית, המותקנת יחד עם המתרגם. זוהי ספריה אדירת מימדים, ונכסה חלק מזערי ביותר בה.

יש ספריות שמותקנות יחד עם המתרגם. פייתון מחזיקה בפילוסופיית "הבטריות בפנים" - כלומר שכל מה שצריך נמצא שם. זו עמדה שנויה במחלוקת (די הפוכה מזו של כותבי הספרייות הסטנדרטיות בC++, לדוגמה). מכל מקום, זו ספריה שאפתנית ואדירת מימדים, והיא מכילה מספר רב של תתי ספריות שכל אחת מהן יכולה להצדיק ספר שלם.

צעדי השימוש בספריות

עריכה

כאשר כותבים קוד, לפעמים מזהים צורך בפעולה מועילה שכיחה למדי - שכיחה במידה כזו שייתכן שהיא חלק מספרייה. להלן מספר פעולות שסביר להניח שאינך הראשון שנדרש להן:

  • השוואה בין שתי מחרוזות
  • חישוב הפונקציה הטריגונומטרית סינוס
  • הדפסת הזמן בשעון המחשב

אם זה המצב, כדאי להשתמש בספריה אם אפשר. כדי להשתמש בספריה, יש צורך בפעולות הבאות:

  1. מציאת הספריה המתאימה
  2. הוספת פקודה לטעינת הספריה

בקוד עצמו אפשר להשתמש בפונקציות ומחלקות הספריה בצורה רגילה לחלוטין.

מציאת הספריה המתאימה

עריכה

ראשית עליך למצוא את הספריה המתאימה לפעולה שאתה מחפש. אין דרך מסודרת לעשות זאת (ייתכן שתיאלץ לחפש באינטרנט, לדוגמה). בפרק זה נתמקד מכל מקום רק בספריה אחת - הספריה הסטנדרטית המגיעה עם המתרגם.

הפקודה לטעינת הספריה

עריכה
      ==import==

import היא פקודה אשר משמשת להוספת ספריות כיוון שפייתון מורכבת מפקודות שבאות מובנות ועם הרבה ספריות וכדי לא ליצור עומס על המחשב. בכדי להקל היוצרים של פייתון הוסיפו פקודה שמוסיפה ספרייה במקום לעשות זאת על ידי תוכנות חיצניות

הפקודה import, שאותה ראינו בפייתון/פייתון גרסה 2/מודולים. הפקודה import בעצם נותנת לנו רשות לקרוא לספריה. דוגמא: import sys

sys זהו שם של ספרייה הנקראת system.

דוגמה: חישוב סינוס

עריכה

נניח שאנו רוצים לקלוט מעלה (ברדיאנים) מהמשתמש, ולחשב את הסינוס שלו. פייתון איננה כוללת פקודה מיוחדת לחישוב סינוס (או כל פונקציה טריגונומטרית אחרת), אך כבר ראינו שהשפה כוללת פעולות חשבוניות. נוכל להשתמש בטור טיילור, לכן, כפי שעשינו בתרגיל קירוב סינוס על ידי טור טיילור. הנה הפיתרון המופיע שם, המתבסס על קירוב ע"י 10 האיברים הראשונים בטור:

sign = 1
factorial = 1

angle = float(raw_input('Please enter angle: '))
power = angle;

sinus = 0

for i in range(10):
	sinus += sign * power / factorial
		
	sign = -sign
	factorial *= (2 * i + 2) * (2 * i + 3)
	power *= angle ** 2
    
print 'sin(%f) ~= %f\n' % (angle, sinus)

פיתרון זה מצריך אותנו לבדוק מהו טור טיילור המתאים ולקודד אותו, פעולה בעלת סיכוי לא-זניח לשגיאות. יותר מכך, הפיתרון המופיע כאן אינו מושלם:

  • מדוע החלטנו להשתמש דווקא ב10 איברים?
  • מה בכלל ערך השגיאה? האם לקחנו בחשבון שערך השגיאה גדל יחד עם המעלה הנקלטת (בערך מוחלט)?
  • האם כלל השתמשנו במחזוריות סינוס?

מובן שאפשר למצוא פתרון מתוחכם קצת יותר, אך ככל שנתחכם יותר, כך גדל הסיכוי שנבזבז זמן בכתיבה ובתיקון. זה מיותר, מפני שסביר להניח שאיננו הראשונים להזדקק לסינוס בפייתון.

במקום זאת נשתמש בספריה הסטנדרטית. נחפש [[1]] מהו קובץ הכותרת המתאים. ניחוש הגיוני הוא math.h. עיון בתיעוד שלו מלמד שאכן יש בו פונקציית סינוס. נשתמש בה, לכן:

import math

angle = raw_input('Please enter angle: ')

print 'sin(%f) ~= %f\n' % (angle, math.sin(angle) )

זוהי אלטרנטיבה קצרה ובטוחה יותר.



- הספריה הסטנדרטית -