Δημοσιεύτηκε: 01 Οκτ 2011, 01:05
Λοιπόν πάλι δεν κατάλαβες σχετικά με τα namespaces.
Πάρε αυτό το παράδειγμα:
Η έξοδος είναι:
Το ότι το χ μέσα στην συνάρτηση έχει το ίδιο όνομα με το καθολικό χ δεν μας ενδιαφέρει. Μες στην συνάρτηση αρχικά δεν υπάρχει κανένα χ και ύστερα ορίζουμε σαν χ το 2. Το χ μες στην συνάρτηση (και γενικώς κάθε μεταβλητή μέσα σε μια συνάρτηση) ονομάζεται τοπικό χ (ή τοπική μεταβλητή).
Αν θες να ξεκαθαρίσεις ότι το χ μέσα στην συνάρτηση πρόκειται για το καθολικό χ και θες οι αλλαγές που θα κάνεις στο χ της συνάρτησης να ισχύσουν και στο καθολικό χ, πρέπει να χρησιμοποιήσεις την εντολή global.
Παράδειγμα:
Έξοδος:
Τώρα πως περνάμε όρισμα στην συνάρτηση;
Παράδειγμα:
Έξοδος:
Αυτό που είπαμε πριν είναι να αποφύγεις την χρήση της εντολής global μέσα στις συναρτήσεις.
Οπότε αντί να γράψεις:
Θα γράψεις:
Τέλος για να το δεις στην πράξη σου δείχνω ένα μέρος του κώδικα σου πως πρέπει να γίνει:
Το υπόλοιπο διόρθωσε το εσύ.
Επίσης καλύτερα ξαναδιάβασε για τις συναρτήσεις ή αν έχεις και άλλα κενά ξανά πάρε τα όλα απ' την αρχή.
Πάρε αυτό το παράδειγμα:
Spoiler: show
Η έξοδος είναι:
Spoiler: show
Το ότι το χ μέσα στην συνάρτηση έχει το ίδιο όνομα με το καθολικό χ δεν μας ενδιαφέρει. Μες στην συνάρτηση αρχικά δεν υπάρχει κανένα χ και ύστερα ορίζουμε σαν χ το 2. Το χ μες στην συνάρτηση (και γενικώς κάθε μεταβλητή μέσα σε μια συνάρτηση) ονομάζεται τοπικό χ (ή τοπική μεταβλητή).
Αν θες να ξεκαθαρίσεις ότι το χ μέσα στην συνάρτηση πρόκειται για το καθολικό χ και θες οι αλλαγές που θα κάνεις στο χ της συνάρτησης να ισχύσουν και στο καθολικό χ, πρέπει να χρησιμοποιήσεις την εντολή global.
Παράδειγμα:
Spoiler: show
Έξοδος:
Spoiler: show
Τώρα πως περνάμε όρισμα στην συνάρτηση;
Παράδειγμα:
Spoiler: show
Έξοδος:
Spoiler: show
Αυτό που είπαμε πριν είναι να αποφύγεις την χρήση της εντολής global μέσα στις συναρτήσεις.
Οπότε αντί να γράψεις:
Spoiler: show
Θα γράψεις:
Spoiler: show
Τέλος για να το δεις στην πράξη σου δείχνω ένα μέρος του κώδικα σου πως πρέπει να γίνει:
- Κώδικας: Επιλογή όλων
import os, pickle
pickle_file = "crypt.db"
pickle_dict = dict()
if os.path.exists(pickle_file):
with open(pickle_file, "rb") as f:
pickle_dict = pickle.load(f)
def save(something_to_save):
pickle.dump(something_to_save, f)
f.close()
def write(file_to_modify, file_to_save_to):
name = input("ονομα; ")
file_to_modify["name"] = "name"
with open(file_to_save_to, "wb") as f:
pickle.dump(file_to_modify, f)
save(file_to_modify)
def menu():
n = input("τι θελετε να κανετε; ")
if n == 1:
write(pickle_dict, pickle_file)
Το υπόλοιπο διόρθωσε το εσύ.
Επίσης καλύτερα ξαναδιάβασε για τις συναρτήσεις ή αν έχεις και άλλα κενά ξανά πάρε τα όλα απ' την αρχή.