Code ReUse 2 – Modules

Δημιουργήσαμε τις συναρτήσεις μας για να τις καλέσουμε αρκετές φορές στο πρόγραμμά μας. Μπορούμε όμως αφού τις φτιάξουμε στο τρέχον σενάριό μας να τις χρησιμοποιήσουμε εκτός από αυτό και σε άλλα προγράμματα και πώς ?? Όπως έχουμε δει, πολλά πράγματα στη γλώσσα αυτή (Πάϊθον),  δεν γίνονται με ένα και μόνο τρόπο έτσι και αυτό. Εδώ θα δούμε τα αρθρώματα λογισμικού (modules).

Μέρος 2ο – Modules

Ας φτιάξουμε για τις ανάγκες μας λοιπόν ένα αρχείο το οποίο έχει δύο συναρτήσεις:

  • την unique η οποία δέχεται ως παράμετρο μία λίστα και επιστρέφει μία νέα η οποία περιέχει κάθε στοιχείο της πρώτης λίστας από μία φορά με την ίδια σειρά εμφάνισης.

  • και αυτή που φτιάξαμε σε προηγούμενο άρθρο την pop_all, η οποία δέχεται ως παραμέτρους μία λίστα και ένα στοιχείο και διαγράφει το στοιχείο από όλες τις θέσεις της λίστας.

τις οποίες και εφαρμόζουμε εντός του προγράμματος σε μία λίστα ακεραίων με τη βοήθεια μίας νέα συνάρτησης της main. Στο τέλος εάν επιθυμούμε να τις χρησιμοποιήσουμε και σε άλλα σενάρια κλείνουμε με τη “μαγική εντολή

” if __name__ == ‘__main__’:

ακολουθεί το ολοκληρωμένο σενάριο:

Image result for wtf funny cartoonπως είπατε ??? :

 if __name__ == “__main__”:
main()

 

Image result for dont' panic cartoon funnyαπόλυτα κατανοητό έτσι !#$%^@*!.

 

 

 

Don’t Panic εξηγούμε ευθύς αμέσως .. ίσως έτσι είναι πιο κατανοητό …

Ορίζουμε τις συναρτήσεις και στη συνέχεια τις καλούμε πάνω σε πραγματικά δεδομένα, καλύτερα έτσι !!! να και τα αποτελέσματα εκτέλεσης επάνω στα δεδομένα:

Όταν εκτελούμε το σενάριο (run) όλα πάνε καλά,  εάν δοκιμάσουμε όμως να αποθηκεύσουμε το σενάριο (πχ new_list_func.py)και στη συνέχεια το κάνουμε εισαγωγή με την εντολή import για να χρησιμοποιήσουμε τις συναρτήσεις σε ένα άλλο σενάριο θα εμφανιστούν τα αποτελέσματα εκτέλεσης του αρχικού σεναρίου δηλαδή :

Άκομψο έτσι δεν είναι, κάθε φορά που φορτώνουμε το άρθρωμα να εμφανίζονται άσχετα δεδομένα εκτέλεσης.

Προτιμότερο θα ήταν να μπορούμε να πούμε κάτι όπως το παρακάτω:

Έεεε λοιπόν αυτό κάνει η μαγική εντολή: if __name__ == “__main__”:

Εάν η μεταβλητή name πάρει ως τιμή το όνομα του τρέχοντος σεναρίου σημαίνει ότι το σενάριο εκτελείται, διαφορετικά σημαίνει ότι φορτώνεται. Γράψτε το παρακάτω σενάριο και στη συνέχεια δοκιμάστε να το τρέξετε και έπειτα να το φορτώσετε :

ή πιο κομψά και με πληρότητα:

Αποτελέσματα με εκτέλεση:

Αποτελέσματα με φόρτωση:

Τώρα μάλιστα … και … και … εάν θέλω να μαζέψω όλα προγράμματα αυτά που επαναχρησιμοποιώ σε άλλο φάκελλο εκτός του c:\python27 και να τα φορτώνω από εκεί γιατί δε δουλεύει και βγάζει σαχλαμάρες κόκκινου χρώματος :

Traceback (most recent call last):

File “<pyshell#12>”, line 1, in
import nwe

ImportError: No module named xxx

… Σε επόμενο άρθρο …. η παροιμία που λέγαμε

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.