השפה תומכת בירושה מרובה, על אף הקשיים שהיא מציבה במקרים כגון ירושת־יהלום או מספר מתודות בעלות אותו שם. האלגוריתם המשמש לפתירת מקרים בהם המזהים הם רב משמעיים הוא מורכב, ועבר שינויים משמעותיים עם התפתחות השפה.
שדות ושיטות.
השפה מאפשרת הגדרת שדות נתונים – משתנים – השייכים למחלקה (משתני מחלקה, נקראים גם משתנים סטטיים) או לאובייקט (משתני מופע). ניתן לגשת לשדות באופן ישיר, ואין דרך להגדיר "תכונות" – שדות שהגישה אליהם מבוקרת באמצעות מתודות – כמו בשפת Ruby.
שיטות שייכות באופן בלעדי למחלקה, כלומר הן תמיד סטטיות. בהצהרה של שיטה, אם מתבצעת קריאה לשיטה דרך אובייקט ספציפי, הוא מועבר בתור הפרמטר הראשון של השיטה (שמקובל לקרוא לו self), באופן מובלע. ניתן לבצע קריאה כזאת גם באופן מפורש:
class A():
def __init__(self, name):
self.name = name
def foo(self):
print("foo is called for " + self.name)
a = A("Example")
a.foo()
A.foo(a)
שתי הקריאות ל־A.foo שקולות במקרה זה, וידפיסו את אותה תוצאה: "foo is called for Example".
בניגוד לשפות מונחות־עצמים אחרות, ניתן להוסיף לכל אובייקט (ומחלקה, שגם היא אובייקט) שדות נתונים בכל זמן נתון, גם לאחר סיום הגדרת המחלקה, כלומר גם בזמן ריצה, או באופן מותנה. למעשה, כל האמור הוא התעסקות עם מרחב השם (namespace) בלבד – כלומר, בכל יצירה של אובייקט, מכל טיפוס, נוצר מרחב־שם, ואליו ניתן לשייך אובייקטים אחרים בכל זמן נתון (במגבלות כלשהן. וכל זה נכון גם לגבי מודולים).
בניה והריסה.
אין בפייתון שיטה המהווה בנאי (Constructor), אך קיימת בכל מחלקה (באופן מובלע או מפורש) שיטה בשם __init__, המאתחלת את האובייקט לאחר שהוא נוצר. באופן דומה, אין שיטה המשמשת כהורס (Destructor) עבור הריסה של אובייקט, בשל השימוש במנגנון איסוף זבל, אך ישנה שיטה בשם __del__ הנקראת על ידי המנגנון, ומשמשת באופן דומה לזה של השיטה finalize של Java. פייתון תומכת בהעמסת אופרטורים, וכן בירושה מטיפוסים מובנים בשפה, כגון int.
בקרת גישה.
בניגוד לשפות מונחות־עצמים רבות אחרות, בפייתון אין שום דרך לשלוט על הגישה אל שדות של אובייקט או מחלקה, באופן שיקביל לשדות private למשל, בשפות C++, Java או #C. מעצבי השפה מניחים שאם לא צריך לגשת אל שדה, לא ייגשו אליו. על מנת לסמן ששדה או שיטה לא נועדו לגישה מבחוץ מקובל להעניק להם שם המתחיל במקף תחתון בודד "_". שמות המתחילים בזוג מקפים תחתונים "__" עוברים שינוי לאחר יצירת המחלקה, כך שלא ניתן לגשת אליו בקלות מבחוץ, וכן לא ניתן למצוא אותם בעזרת הפקודה dir. למשל, משתנה בשם y__ במחלקה A ייקרא A__y_.
ספרייה סטנדרטית.
על אף שהשפה עצמה לא מכילה כמות גדולה של כלים, הספרייה הסטנדרטית של פייתון כוללת עשרות מודולים, אשר מקלים מאוד על כתיבת קוד. ישנם לדוגמה מודולים אשר מאפשרים שימוש בפרוטוקולי אינטרנט רבים כגון MIME, HTTP ו־SMTP, שימוש בקידודים ובפורמטי דחיסה שונים כמו base64 ו־zlib, עבודה עם XML־ים ועוד.
חבילות הרחבה.
לפייתון יש מספר רב של חבילות הרחבה (packages) המוסיפות יכולות נוספות ופונקציות ספרייה חדשות.
דוגמאות להרחבות נפוצות ושימושיות:
חבילות כאלו מותקנות לרוב באמצעות החבילה pip, מנהל החבילות שמגיע עם השפה:
python -m pip install PackName
כאשר את המחרוזת PackName יש להחליף בשם החבילה אותה רוצים להתקין.
על מנת להשתמש בחבילות נדרש לטעון אותן - להוסיף בראש קובץ הקוד בפקודת import את הספרייה באופן הבא:
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
שימוש בתעשייה.
השפה משמשת למספר מטרות. אחד השימושים המקובלים הוא לכתיבת תוכנות שייעודן הוא זמני – לכתוב ולזרוק. מהירות הפיתוח מאפשרת ביצוע משימה כזאת בקלות רבה יותר מאשר שפות מקובלות יותר כמו ++C, C, Java ואחרות. הרחבה של הרעיון הזה הוא בכתיבת הוכחת היתכנות (POC - Proof Of Concept). כאשר עולה דרישה לתוכנה מסוג חדש, ויש צורך להוכיח שהרעיון ישים באופן עקרוני, אפשר לפתח את כל התוכנה במהירות בפייתון. לאחר הוכחת ההתיתכנות עוברים לפיתוח בשפות אחרות, המאפשרות לעיתים ביצועים יעילים יותר, על פי הצורך. עם זאת, אין פירוש הדבר שלא נעשה בשפה שימוש לכתיבת תוכנות גדולות. דוגמאות לכך הן Zope וביטורנט.
שימוש נוסף בפייתון הוא לפיתוח אלגוריתמים בתחומי המדעים המדויקים וההנדסה, בדומה לשימוש ב־MATLAB. חבילות ההרחבה, כגון NumPy, המאפשרות עבודה יעילה עם וקטורים ומטריצות, הופכות אותה לנוחה ושימושית למטרה זו.
פייתון היא אחת מהשפות העיקריות בהן עובדת חברת גוגל. בין השאר, הגרסה הראשונה של זחלן הרשת של מנוע החיפוש גוגל נכתבה בפייתון, כל מערכת הפיתוח של גוגל (ניהול גרסאות ובניית מהדורות) מתבצעת בטכנולוגיה מבוססת פייתון וחלק מאתריה הגדולים כגון יוטיוב כתובים בצורה כמעט גורפת בפייתון. בנוסף, באפריל 2008 הזמינה גוגל גולשים לכתוב אפליקציות פייתון ולהתקינן על מערכת שרתיה.
אנקונדה היא הפצה של שפות התכנות פייתון לתכנות מדעי (מדעי הנתונים, יישומי למידת מכונה, עיבוד נתונים בקנה מידה גדול, ניתוח ניבויי וכו').
עוד שימושים נוספים בפייתון הם: כריית מידע, בינה מלאכותית, טסטים, אוטומציות, מחשוב בענן, תוכנות, בניית אתרים, ו-Big data.
מקור השם.
שם השפה "פייתון" נבחר כמחווה לקבוצה הקומית הבריטית "מונטי פייתון" עקב כך שחידו ואן רוסום, יוצר השפה, היה מעריץ שלהם, אזכורים למונטי פייתון מופיעים גם בקוד ובתרבות של פייתון. לדוגמה, המשתנים המטא-תחביריים שנמצאים בספרות של שפת פייתון הם "spam" ו"eggs""," כאזכור לבדיחה שמופיעה בפרקים הראשונים של מונטי פייתון, במקום "foo" ו"bar" שנמצאים בשימוש ברוב שפות התכנות. בנוסף, התיעוד הרשמי של פייתון מכיל אזכורים שונים לבדיחות של מונטי פייתון.
הרישיון הציבורי הכללי של גנו
הרישיון הציבורי הכללי של גנו, הידוע בעיקר כ־GNU GPL (ראשי תיבות באנגלית של GNU General Public License), או בקיצור GPL, הוא רישיון לתוכנה חופשית, שנכתב במקור על ידי ריצ'רד סטולמן בעבור פרויקט גנו והפך מאז לאחד הרישיונות הפופולריים לתוכנה חופשית.
ה-GPL הוא בראש ובראשונה רישיון Copyleft, שמשמעו שיצירות נגזרות ישמרו תחת אותם תנאי רישיון. תחת הפילוסופיה הזאת, ה-GPL מעניק לתוכנת מחשב זכויות של תוכנה חופשית ומשתמש ב-Copyleft כדי להבטיח שהחירות תישמר, גם אם העבודה שונתה או שודרגה.
מטרה.
מטרת הרישיון היא לשמור על החופש של תוכנה שהופצה ככזו, מבלי שאחר יוכל לנכס אותו לעצמו או "לקטוף" את פירות המאמץ של אחרים. למקבל תוכנה בעלת רישוי שכזה יש את החופש להריץ את התוכנה לכל מטרה שהיא, לחקור וללמוד את התוכנה, לשנות ולשפר אותה, להעתיק ולהפיץ את התוכנה בכל צורה שהיא, ובלבד שישמר החופש שלה.
הרישיון לא מונע מכירה של תוכנה. רישיון תוכנה חופשית בהכרח יתיר שימוש מסחרי בתוכנה. אולם באותה מידה אין אפשרות למנוע מאחרים להפיץ את אותה התוכנה, ולכן בפועל ברוב המקרים תוכנות ברישיון זה זמינות בחינם, ועסקים שמפיצים תוכנות בצורה הזאת בדרך כלל מתמקדים בגביית תשלום על שירותים הנלווים לתוכנה כמו שיפור, עדכון, תחזוקה, הפצה, שיווק, ייעוץ ותמיכה.
ה־GPL מחייב לשחרר את הקוד רק למשתמשים בתוכנה ולא לציבור הרחב, כך שאם עושים שימוש בתוכנה באופן אישי, אין צורך לשחרר את הקוד. כמו כן, אם חברה מסוימת עושה שינויים בתוכנה אבל לא משחררת את השינויים ללקוחות אלא רק משתמשת בהם בצורה פנימית, החברה לא מחויבת לשחרר את הקוד המעודכן לציבור.
על מנת למנוע בלבול, נוסח הרישיון עצמו אינו נמצא תחת רישיון ה-GPL. הרישיון שמור בזכויות יוצרים שאוסרות לשנות את הרישיון. אך לפי ה-FAQ של GPL, כל אחד יכול לשנות את הרישיון כל עוד משתמשים בשם אחר לרישיון, לא מזכירים את השם "גנו" ומסירים את המבוא.
גרסאות.
לרישיון היו עם השנים שלוש גרסאות שונות. שלוש הגרסאות דומות במטרותיהן, אולם שונות בפרטים הטכניים. קרן התוכנה החופשית ממליצה לכתוב על תוכניות, שהקוד בהן מופץ תחת תנאי הרישיון מגרסה &lt;מסוימת&gt; או כל גרסה מאוחרת יותר, כדי לאפשר שימוש בהם אם וכאשר הקרן תוציא גרסה חדשה יותר של הרישיון.
גרסה 1.
הגרסה הראשונה של הרישיון נכתבה בשנת 1989. היא כיום כמעט לא בשימוש (פרט למודולי פרל רבים אשר רישיון השימוש של רבים מהם הוא הרישיון האומנותי או ה־GPL מגרסה 1 ומעלה).
גרסה 2 (GPLv2).
שנתיים לאחר מכן, בשנת 1991, נכתבה גרסה 2. גרסה זו תיקנה מספר בעיות טכניות. במקביל לה נכתב רישיון ה־LGPL. בשנת 1999 יצאה גרסה 2.1 של ה־LGPL עם מספר תיקונים טכניים. שתי הגרסאות הללו נפוצות בשימוש עד היום, מכיוון שמשתמשים רבים מסתייגים מגרסה 3 של הרישיון.
גרסה 3 (GPLv3).
גרסה 3 נכתבה באמצע שנות ה־2000, בתהליך ניסוח שארך מעל לשנה. הגרסה הסופית יצאה בשנת 2007. הגרסה החדשה כללה תיקונים רבים, כגון התאמה טובה יותר לחקיקה מחוץ לארצות הברית, פתרון בעיות בשימוש ביחד עם קוד ברישיון אפאצ'י 2.0, ועוד. LGPL ו־AGPL (גרסאות 3 של שניהם) נוסחו בהסתמך על נוסח ה־GPL, בתוספת סעיף החרגה אחד. אולם היו גם כמה שינויים שנויים במחלוקת. בפרט החמרת היחס למגבלות פטנטים ולמגבלות ניהול זכויות דיגיטלי. כל הקוד של פרויקט גנו, וכן של פרויקטים נוספים (כגון סמבה) שינו את הרישיון לגרסה 3.0. אחרים (כגון רוב מפתחי ליבת לינוקס) סירבו לשנות את הרישיון.
ראו גם.
רישיונות דומים לתוכנה חופשית:
אספרנטו