Upload
calvin
View
102
Download
0
Embed Size (px)
DESCRIPTION
H Python είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου γενικής χρήσεως.Οι δημιουργοί της υποστηρίζουν ότι συνδυάζει μεγάλη δύναμη με πολύ καθαρό συντακτικό. Η Python υποστηρίζει πολλαπλές προγραμματιστικές λογικές όπως αντικειμενοστραφής λογική,συναρτησιακή κ.α. H γλώσσα Python. - PowerPoint PPT Presentation
Citation preview
H γλώσσα Python
• H Python είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου γενικής χρήσεως.Οι δημιουργοί της υποστηρίζουν ότι συνδυάζει μεγάλη δύναμη με πολύ καθαρό συντακτικό.
• Η Python υποστηρίζει πολλαπλές προγραμματιστικές λογικές όπως αντικειμενοστραφής λογική,συναρτησιακή κ.α
H γλώσσα Python
• Χρησιμοποιεί ένα πλήρες δυναμικό σύστημα και αυτόματη διαχείριση της μνήμης
• Για αυτό τον λόγο χρησιμοποιείτε συνήθως ως scripting language.
Ο διερμηνέας της Python(1)
O διερμηνέας(interpreter) της Python είναι το βασικό περιβάλλον της γλώσσας γιατί εκεί λαμβάνουν δράση όλες η διαδικασίες που αφορούν την γλώσσα.
Είναι υπεύθυνος για την εκτέλεση των προγραμμάτων και προσφέρει εργαλεία για την ανάπτυξη προγραμμάτων.
Ο διερμηνέας της Python(2)
• Μοιάζει με ένα τερματικό τύπου Unix και δέχεται την εισαγωγή εντολών.
π.χ python -c command [arg]Μας επιτρέπει επίσης την εισαγωγή παραμέτρων
στα προγράμματα .
Ο διερμηνέας της Python(3)
Όταν ο διερμηνέας διαβάζει εντολές που πληκτρολογούμε εμείς λέμε ότι ο διερμηνέας βρίσκεται σε interactive mode.
Στο interactive mode περιμένει την επομένη εντολή με την βασική γραμμή εντολών ( >>> εντολή) και για συνεχιζόμενες γραμμές μια εντολής ή ενός μπλοκ εντολών χρησιμοποιεί 3 τελείες (...).
Παράδειγμα
• >>> should_isay_hello=1>>>if should_isay_hello :• … print (“Hello World”)• …• Hello World
Ο διερμηνέας της Python(4)
• Μερικά χαρακτηριστικά του διερμηνέας• Error Handling.• Εκτέλεση Python Scripts.• Αλλαγή του encoding του κώδικα ενός
προγράμματος.
Δυναμική μνήμη
• Όπως αναφέραμε η Python χρησιμοποιεί δυναμικό σύστημα μνήμης και αυτόματη διαχείριση μνήμης.
• Οι βασικές δομές δεδομένων είναι : οι
συμβολοσειρές και οι λίστες.
Δυναμική μνήμη
• Υπάρχουν βέβαια και άλλοι τύποι δυναμικής μνήμης όπως τα sets,dictionaries(τα αντίστοιχα maps στην C++) και τα tuples.
Συμβολοσειρές
• Μια συμβλοσειρά στην πραγματικότητα είναι μια δυναμική ακολουθία χαρακτήρων.
• Στην Python μια συμβολοσειρά μπορεί να εκφραστεί με πολλούς τρόπους
Παράδειγμα
• >>> "doesn't"• "doesn't"• >>> '"Yes," he said.'• '"Yes," he said.'• >>> "\"Yes,\" he said."• '"Yes," he said.'• >>> '"Isn\'t," she said.'• '"Isn\'t," she said.'
Συμβολοσειρές(2)
• Μια συμβολοσειρά μπορεί να είναι και παραπάνω από μια σειρές.
• Πρέπει η γραμμές να διαχωρίζονται από μια κάθετο \.
Παράδειγμα
• hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\Note that whitespace at the beginning of the line
is\significant."
• print(hello)
Συμβολοσειρές(3)
• Στην Python μπορούμε να διαχειριστούμε τις συμβολοσειρές με πολλούς τρόπους.• word = 'Help' + 'A'
>>> word'HelpA'>>> '<' + word*5 + '>''<HelpAHelpAHelpAHelpAHelpA>'
Συμβολοσειρές(3)(συνέχεια)
• >>> 'Hel' 'lo' 'Hello'>>> 'Wor'.strip() + 'ld' 'World'
Συμβολοσειρές(4)
• Μπορούμε επίσης να προσπελάσουμε την συμβολοσειρά μας ανά στοιχείο όπως την C
• πχ.>>>lng=”Python”>>>lng[0]P
Συμβολοσειρές(4)(συνεχεια)
• Επίσης έχουμε την δυνατότητα να ορίσουμε όρια στον δείκτη προσπέλασης της συμβολοσειράς.
• πχ.>>lng[0:4] #Apo 0 eos 4 Pytho>>lng[2:]#Ola ektos apo tous 2 protous thon
Συμβολοσειρές(5)
• Oι συμβολοσειρές στην Python αντίθετα με την C δεν είναι μεταβλητές.
• Επίσης στην Python μπορούμε να έχουμε αρνητικό αριθμό ως δείκτη προσπέλασης μια συμβολοσειράς.
Παράδειγμα
• >>> lng[-1] # O teleytaios xaraktiras• 'n'• >>> lng[-2] # O proteleytaios• 'o'• >>> lng[-2:] # Oi dyo teleyataioi• 'on'• >>> lng[:-2] # Oloi ektos apo tous 2 teleytaious• 'Pyth'
Παράδειγμα
• +---+---+---+---+---+• | P | y | t | h | o | n |• +---+---+---+---+---+• 0 1 2 3 4 5 6 • -6 -5 -4 -3 -2 -1
Λίστες
• Οι λίστες στην Python είναι ο δεύτερος βασικός τύπος δυναμικής μνήμης.
• >>>list1=['Pink','Floyd',3,1973]>>>a['Pink','Floyd',3,1973]
Λίστες(2)
• Όπωςκαι οι συμβολοσειρές έτσι και οι λίστες μπορούν οριστούν όρια στον δείκτη προσπέλασης.
• Αρχίζουν και αυτές από το στοιχείο 0• Μπορούν να υποστούν αλλαγή μεγέθους.
Παράδειγμα
• >>> list1[0]• 'Pink'• >>> list1[3]• 1973• >>> list1[-2]• 3• >>> list1[1:-1]• ['Floyd', 3]
Παραδειγμα
• >>> list1[:2] + ['Wall', 1979]• ['Pink', 'Floyd', 'Wall', 1979]• >>> 3*list1[:3] + ['Breathe!']• ['Pink', 'Floyd', 3, 'Pink', 'Floyd', 3, 'Pink',
'Floyd', 3, 'Breathe!']
Λίστες (3)
• Σε αντίθεση με τις συμβολοσειρές στις λίστες μπορούμε να μεταβάλουμε το περιεχόμενο ενός στοιχείου.
• >>> list1• ['Pink', 'Floyd', 3, 1973]• >>> list1[2] = list1[2] + 23
>>> list1['Pink', 'Floyd', 26, 1973]
Λίστες (3)
• Επίσης μπορούμε να θέσουμε τα όρια και να κάνουμε αλλαγές εντός των ορίων που θέσαμε.
• >>> # Replace some items:... list1[0:2] = ['Led', 'Zeppelin']• >>> a
['Led','Zeppelin',26,1973]
Λίστες (4)
• Επίσης η συνάρτηση len() χρησιμοποιείται στις λίστες και επιστρέφει το μέγεθος μιας λίστας.
• >>>len(list1)4
If Statement
• Η συνθήκη if λειτουργεί όπως ακριβώς ξέρουμε και από άλλες γλώσσες προγραμματισμού.
• Με την μόνη διαφορά ότι δεν είναι else if είναι elif.
Παράδειγμα
• >>> x = int(input("Please enter an integer: "))• Please enter an integer: 42• >>> if x < 0:• ... x = 0• ... print('Negative changed to zero')• ... elif x == 0:• ... print('Zero')• ... elif x == 1:• ... print('Single')
Παράδειγμα
• ... else:• ... print('More')• ...• More
Statement for
• Στην Python η συνθήκη for διαφέρει λίγο από ότι έχουμε σε άλλες γλώσσες όπως η C ή Java.
• Στην Python η ακολουθία που εκτελείται στην επανάληψη γίνεται μεταξύ των αντικειμένων μιας δυναμικής ακολουθίας (πχ μια λίστα).
Παράδειγμα
• >>> # Paradeigma for stin Python:• ... s1 = ['Ubuntu', 'Fedora', 'Slackware']
>>> for x in s1:... print(x, len(x))...Ubuntu 6Fedora 6Slackware 9
Stament for (2)
• Δεν είναι ασφαλές να τροποποιούμε μια δυναμική ακολουθία (αυτό κυρίως απευθύνεται σε ακολουθίες όπως οι λίστες) την οποία έχουμε μέσα σε μια for.
• Μια καλή λύση είναι να βάλουμε ένα αντίγραφο της ακολουθίας με την βοήθεια των ορίων προσπέλασης.
Παράδειγμα
• >>> for x in s1[:]: # Dimiourgoume ena antigrapho tis s1
• ... if len(x) > 6: s1.insert(0, x)• ...• >>> s1• ['Slackware', 'Ubuntu', 'Fedora', 'Slackware']
range() function
• Αν χρειαστεί να προσπελάσουμε με την βοήθεια μιας αριθμητικής ακολουθίας σε μια for τότε η συνάρτηση range() γίνεται πολύ χρήσιμη.
• H συνάρτηση range() δημιουργεί μια ακολουθία αριθμών μεταξύ του startpoint & endpoint που δέχεται ως ορίσματα.
• range(startpoint,endpoint)
Παράδειγμα
• >>> for i in range(5):• ... print(i)• ...• 0• 1• 2• 3• 4
range() function (2)
• To endpoint δεν είναι μέρος της ακολουθίας.• Δηλαδή αν εκτελέσουμε range(10) θα
πάρουμε τους αριθμούς από 0-9.• Μπορούμε να θέσουμε και το βήμα με το
οποίο θα αυξάνεται η ακολουθία μας.
Παράδειγμα
• range(5, 10)• 5 through 9
• range(0, 10, 3)• 0, 3, 6, 9
• range(-10, -100, -30)• -10, -40, -70
Παράδειγμα
• >>> a = ['Dark', 'Side', 'of', 'the', 'Moon']• >>> for i in range(len(a)):• ... print(i, a[i])• ...• 0 Dark• 1 Side• 2 of• 3 the• 4 Moon
Συναρτήσεις
• >>> def fib(n): # Sinartisi akolouthias fibonacci • ... """Ektiposi mias akolouthias fibonacci"""• ... a, b = 0, 1• ... while b < n:• ... print(b, end=' ')• ... a, b = b, a+b• ... print()• ...• >>> # Klisi sinartisis:• ... fib(2000)• 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
1597
Συναρτήσεις
• Στην Python ορίζουμε συναρτήσεις με την λέξη def.
• Δίπλα από την λέξη def είναι το όνομα και οι παράμετροι της συνάρτησης.
• Το σώμα της συνάρτησης αρχίζει στην επομένη γραμμή από κάτω.
Συναρτήσεις (2)
• Η δημιουργία μια συνάρτησης δημιουργεί ένα τοπικό όνομα συνάρτησης και έχει μια τιμή που αναγνωρίζεται ως user-defined function.
• Αυτό το όνομα μπορούμε να το αναθέσουμε σε ένα καινούργιο σύμβολο και να χρησιμοποιούμε και αυτό με το ίδιο αποτέλεσμα.
Παράδειγμα
• >>> fib• <function fib at 10042ed0>• >>> f = fib• >>> f(100)• 1 1 2 3 5 8 13 21 34 55 89
Συναρτήσεις (3)
• Η συνάρτηση fib που ορίσαμε δεν επιστρέφει καμία τιμή.
>>> fib(0)• >>> print(fib(0))• None
Συναρτήσεις (3)
• Μπορούμε να δημιουργούμε συναρτήσεις οι οποίες μπορούν να επιστρέφουν ένα αποτέλεσμα.
• Είναι πολύ εύκολο να γράψουμε την συνάρτηση fib να επιστρέφει μια λίστα αντί να εκτυπώνει την ακολουθία.
Παράδειγμα
• >>> def fib2(n): # epistrofi akolouthias fibonacci• ... """Epistrofi mias listas me ta apotelesmata akolouthias
fibonacci gia n."""• ... result = []• ... a, b = 0, 1• ... while b < n:• ... result.append(b) • ... a, b = b, a+b• ... return result• ...• >>> f100 = fib2(100) # klisi sinartisis• >>> f100 # ektiposi apotelesmatos• [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
Συναρτήσεις (4)
• Μπορούμε να γράψουμε και συναρτήσεις με μεταβλητό αριθμό arguments.Υπάρχουν 3 τρόποι και οι συνδυασμοί τους.
• Default Argument Values• Κeyword Arguments• Arbitary Argument List.
Default Argument Values
• Όταν ορίζουμε μια συνάρτηση μπορούμε να έχουμε προκαθορισμένες τιμές για ένα argument.
• Αυτό μας βοηθάει στο ότι μπορούμε να καλέσουμε την συνάρτηση και να δώσουμε λιγότερα ορίσματα αφού υπάρχουν προκαθορισμένες τιμές.
Παράδειγμα
• def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
• while True:• ok = input(prompt)• if ok in ('y', 'ye', 'yes'):• return True• if ok in ('n', 'no', 'nop', 'nope'):• return False• retries = retries - 1• if retries < 0:• raise IOError('refusenik user')• print(complaint)
Keyword Arguments
• Μια συνάρτηση μπορεί να κληθεί χρησιμοποιώντας keyword arguments του τύπου keyword=value.
Παράδειγμα
• def Band(members_num=0, guitar='None', bass='None', singer='None',drums='None'):
• print("The band has”,members,”members.”)• print("Singer for the band:", singer)• print(“Guitarist for the band:”,guitar)• print(“Bass Player for the band:”,bass)
print(“Drums player for the band:”,drums)
Παράδειγμα
• >>>band()• The band has 0 members• Singer for the band:None• Guitarist for the band:None• Bass Player for the band:None
Drums player for the band:None
Παράδειγμα
• band(member_num=4,guitar='Jimmy Page',bass='John Paul Jones',singer='Robert Plant',drums='John Bonham'
• The band has 4 members• Singer for the band: Robert Plant• Guitarist for the band: Jimmy Page• Bass Player for the band: John Paul Jones
Drums player for the band: John Bonham
Keyword Arguments
• Επίσης μπορούμε να δηλώσουμε keyword arguments με αλλο τρόπο.
Κeyword Arguments
• def cheeseshop(kind, *arguments, **keywords):
• print("-- Do you have any", kind, "?")• print("-- I'm sorry, we're all out of", kind)• for arg in arguments: print(arg)• print("-" * 40)• keys = sorted(keywords.keys())• for kw in keys: print(kw, ":", keywords[kw])
Keyword Arguments
• Η κλήση της παραπάνω συνάρτησης θα γίνει κάπως έτσι.
• cheeseshop("Limburger", "It's very runny, sir.",• "It's really very, VERY runny, sir.",• shopkeeper="Michael Palin",• client="John Cleese",• sketch="Cheese Shop Sketch")
Κeyword Arguments
• Kαι το αποτέλεσμα :• -- Do you have any Limburger ?• -- I'm sorry, we're all out of Limburger• It's very runny, sir.• It's really very, VERY runny, sir.• ----------------------------------------• client : John Cleese• shopkeeper : Michael Palin• sketch : Cheese Shop Sketch
Arbitrary Argument Lists
• Τέλος μπορούμε να απλά να βάλουμε τα ορίσματα μιας συνάρτησης σε μια δυναμική ακολουθία (πχ μια λίστα) και να τα περάσουμε από εκεί.
Παράδειγμα
• >>> def concat(*args, sep="/"):• ... return sep.join(args)• ...• >>> concat("earth", "mars", "venus")• 'earth/mars/venus'• >>> concat("earth", "mars", "venus", sep=".")• 'earth.mars.venus'
Κλάσεις
• Η Python εφόσον υποστηρίζει αντικειμενοστραφή λογική δίνει την δυνατότητα για τον ορισμό κλάσεων.
Class Definition
• class ClassName:• <statement-1>• .• .• .• <statement-N>
Class Definition.
• Όπως και στις συναρτήσεις έτσι και στις κλάσεις πρέπει πρώτα να γίνει η δήλωση προτού υπάρξει κάποιο αποτέλεσμα.
• Συνήθως μέσα σε μια κλάση έχουμε τις δηλώσεις των ιδιοτήτων και των μεθόδων της.
Παράδειγμα
• class MyClass:• """Mia apli class"""• I = 12345 #idiotita.• def f(self): #methodos.• return 'hello world'
Class Objects
• Tα αντικείμενα μιας κλάσης υποστηρίζουν 2 είδη λειτουργιών.
• Αttribute Reference• Instantiation
Attribute Reference
• Όταν έχουμε ένα αντικείμενο μιας κλάσης,τότε αυτό έχει τα χαρακτηριστικά της κλάσης που ανήκει.
• Έχουμε την δυνατότητα να αναφερθούμε σε αυτά.
• Σύμφωνα με το Python Syntax μπορούμε να αναφερθούμε σε ένα attribute με αυτόν τον τρόπο
• obj.atrr_name
Instantiation
Όταν δημιουργούμε ένα αντικείμενο μιας κλάσης τότε του δίνουμε μια υπόσταση που υπακούει στην δήλωση της αντίστοιχης κλάσης.
• Αυτή η διαδικασία ονομάζεται instantiation και γίνεται με την κλήση μιας συνάρτησης δημιουργού.
Μέθοδος Δημιουργός
• Μια μέθοδος δημιουργός μέσα σε μια κλάση στην Python συντάσσεται κατά αυτόν τον τρόπο.
• def __init__(argument1,argument2,...)• Είναι μια μέθοδος που χρησιμοποιείται όταν
δίνουμε σε ένα αντικείμενο μια υπόσταση και μας βοηθάει να καθορίσουμε τις ιδιότητες της υπόστασης αυτής για την οποία έγινε η κλήση.
Παράδειγμα
• >>> class Complex:• ... def __init__(self, realpart, imagpart):• ... self.r = realpart• ... self.i = imagpart• ...• >>> x = Complex(3.0, -4.5)• >>> x.r, x.i• (3.0, -4.5)
Instance Objects
• Αναφορά σε ιδιότητα:myobject.x• Αναφορά σε μέθοδο:
mybject.foo()