לשפת Python יש דמיון רב לשפות Perl, C ו-Java, אך למרות זאת ישנם הבדלים ניכרים בין השפות. לאחר שבפרק הקודם הגדרנו את סביבת התכנות, בפרק זה נלמד איך עובד התחביר הבסיסי בשפת Python
התוכנית הראשונה שלי
- תכנות מתוך המקשר האינטראקטיבי:
כאשר נפעיל את המקשר בווינדוס (תזכורת – קורס זה נכתב בווינדוס 10 ויש הבדלים מסוימים בין מערכות הפעלה) מבלי לתת קובץ סקריפט כפרמטר, תוצג לנו ההודעה הבאה:
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
<<<
כתבו בשורת הפקודה של Python את הקוד הבא:
print ("Hello, Python!")
שלאחר שתריצו אותה יתקבל הפלט הבא:
!Hello, World
- תכנות סקריפטים:
כאשר נפעיל את המקשר עם סקריפט, הוא יריץ את הסקריפט וימשיך עד שהסקריפט נגמר, ואז המקשר יפסיק את פעולתו. כעת נכתוב סקריפט ב-Python, כאשר סיומת קובץ הסקריפט היא תמיד py. כתבו את אותה התוכנית לתוך קובץ סקריפט בשם test.py:
print ("Hello, Python!")
בהנחה שסידרתם נתיב PATH כפי שהוסבר בפרק הקודם, תוכלו להפעיל את המקשר עם סקריפט באמצעות כתיבת הפקודה הבאה בשורת הפקודה במערכת ההפעלה שלכם:
C:\Python34>Python test.py
ואז תקבלו מיד את הפלט הרצוי:
!Hello, World
מזהים Identifires ב-Python
מזהים Identifires הם למעשה שמות שמורים עבור משתנים, פונקציות, מודולים ועוד, כאשר שם המזהה חייב להתחיל באות קטנה או גדולה, מספר או קו תחתון (_) שאחריו מגיעות אותיות או מספרים. לא ניתן להשתמש בסימנים כמו % או @ בשם המשתמש. כמו כן Python היא שפת תכנות תלוית רישיות Case Sensitive, כלומר שהשפה יודעת להבחין בין אותיות קטנות לגדולות, למשל השם Manpower נחשב שם מזהה שונה מ-manpower.
- שם מחלקה class חייב להתחיל באות גדולה, שאר המזהים מתחילים באות קטנה
- כאשר מופיע בתחילת שם המזהה סימן קו תחתון (_), זה מצביע על כך שהוא פרטי
- כאשר מופיעים בתחילת שם המזהה 2 סימני קו תחתון (__), זה מצביע על כך שהוא פרטי ביותר
- כאשר מופיעים גם בתחילת שם המזהה וגם בסופו 2 סימני קו תחתון (__), זהו שם מיוחד מוגדר על ידי השפה
מילים שמורות\מילות מפתח
אלו הם מילים שמורות ב-Python 3 שלא ניתן להשתמש בהם כשמות למשתנים או למזהים. שימו לב כי כל המילים השמורות ב-Python כתובות באותיות קטנות בלבד:
and | exec | not |
as | finally | or |
assert | for | pass |
break | from | |
class | global | raise |
continue | if | return |
def | import | try |
del | in | while |
elif | is | with |
else | lambda | yield |
except |
הזחה ושורות
שפת Python אינה משתמשת בסוגריים ({}) על מנת לתחום בלוקים של קוד, הגדרות של פונקציות, מחלקות או בקרת שליטה. בלוקים של קוד מסומנים על ידי הזחה.
מספר הרווחים בהזחה הוא משתנה, אך כל הביטויים שנמצאים בבלוק אחד צריכים להיות בעלי כמות רווחים זהה. לדוגמה:
if True: print ("True") else: print ("False")
אך הבלוק הבא יחזיר לנו שגיאה :
if True: print ("Answer") print ("True") else: print "(Answer") print ("False")
כך שכל השורות שכתובות אחת אחרי השנייה ובעלות אותה ההזחה, מזוהות כבלוק של קוד.
לפניכם דוגמה של מבחר שורות קוד, בשלב הזה אל תנסו להבין את ההיגיון שמאחוריהן, אלא התבוננו בבלוקים ובהזחה על מנת להבין איך זה עובד:
import sys file_finish = "end" file_text = "" contents=[] file_name=input("Enter filename: ") if len(file_name) == 0: print("Please enter filename") sys.exit() try: # open file stream file = open(file_name, "w") except IOError: print ("There was an error writing to", file_name) sys.exit() print ("Enter '", file_finish,) print ("' When finished") while file_text != file_finish: file_text = input("Enter text: ") contents.append(file_text) if file_text == file_finish: # close the file file.close() break print(contents) data = ' '.join([str(elem) for elem in contents]) print(data) file.write(data) file.close() file_name = input("Enter filename: ") if len(file_name) == 0: print ("Next time please enter something") sys.exit() try: file = open(file_name, "r") except IOError: print ("There was an error reading file") sys.exit() file_text = file.read() file.close() print (file_text)
ביטויים רבי-שורות
באופן טיפוסי, ביטויים בשפות תכנות בדרך כלל מסתיימים כאשר מתחילה שורה חדשה, אך בשפת Python לעומת זאת, ניתן להמשיך את הביטוי לשורה הבאה על ידי הוספת הסימן קו נטוי (\) בסוף השורה, וכך התוכנית יודעת שהביטוי ממשיך בשורה הבאה, לדוגמה:
total = item_one + \ item_two + \ item_three
שימו לב כי לביטויים שנמצאים בתוך סוגריים ( ) [ ] { } אין צורך בסימן המשך שורה. למשל:
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
סימני הגרשיים (" ") (' ')
Python מאפשרת שימוש בגרש בודד ('), גרשיים כפולות (" ") או גרשיים משולשות ("') למטרת סימון מחרוזות, כל עוד המחרוזת מסומנת באותו סוג הגרשיים מכל צד.
הגרשיים המשולשות נועדו לפרוש מחרוזת על יותר משורה אחת, הדוגמאות הבאות הן תקינות בשפת Python:
word = 'word' sentence = "This is a sentence." paragraph = """This is a paragraph. It is made up of multiple lines and sentences."""
הערות צד
כאשר סימן הסולמית (#) אינו נמצא בתוך מחרוזת, הוא מסמן תחילת הערה. התוכנית תתעלם מכל התווים שמגיעים אחרי סימן הסולמית (#) עד סוף השורה, לדוגמה:
# First comment print ("Hello, World!") # second comment
וכשנריץ תוכנית זו נקבל את הפלט הבא:
!Hello, World
כפי שניתן לראות ניתן להוסיף הערה גם אחרי ביטוי. כמו כן חשוב לדעת כי בשפת Pyhton לא ניתן לפרוש הערה אחת על מספר שורות ולכן נצטרך בכל שורה להתחיל הערה חדשה, כפי שניתן לראות בדוגמה הבאה:
# This is a comment. # This is a comment, too. # This is a comment, too.. # This is a comment, too...
שורות ריקות
כשיש לנו בתוכנית שורה ריקה, כאשר שורה שיש בה הערה גם נחשבת שורה ריקה, התוכנית תתעלם ממנה ותמשיך אל השורה הבאה. שימו לב כי בעבודה במקשר האינטראקטיבי עליכם להכניס שורה ריקה על מנת לסגור ביטוי רב-שורות.
מצב המתנה למשתמש
שורת הקוד הבאה תוציא לנו פלט ותמתין לתגובת המשתמש:
input("\n\nPlease press enter to exit.")
הסימן (\n\n) מורה לתוכנית לרדת 2 שורות לפני שיודפס הפלט, כאשר המשתמש לוחץ על המקש Enter במקלדת, התוכנית תסתיים.
מספר ביטויים בשורה אחת
סמל הנקודה פסיק (;) מאפשר לנו לכתוב מספר ביטויים בשורה אחת, וזאת בתנאי שאף אחד מהביטויים לא מתחיל בלוק קוד חדש. לדוגמה:
mport sys; x = 'foo'; sys.stdout.write(x + '\n')
קבוצות ביטויים במערכת Suite
קבוצות ביטויים אינדיבידואליות שמגיעות כבלוק קוד נקראות ב-Python מערכות Suites. ביטויים מורכבים כגון if ו-while מגיעים כך שיש להם ראש וגוף למערכת, כלומר שהביטוי מגיע בראש המערכת כשלאחריו רווח וסמל נקודותיים (:), ומתחתיו מגיעות שורות גוף המערכת כפי שניתן לראות בדוגמאות הבאות:
if expression : suite elif expression : suite else : suite
סימנים בשורת הפקודה
אם נפעיל את Python משורת הפקודה עם הטיעון h- , תוצג לכם הודעה שמונה את כל סוגי הטיעונים שאפשר להוסיף בשורת הפקודה כדי להפעיל את Python לכל מיני צרכים. כמו כן תוכלו גם לכתוב תוכנית שניתן להוסיף לה טיעונים בהפעלה.