Δημοσιεύτηκε: 30 Ιαν 2012, 17:57
Για το post
viewtopic.php?f=6&t=5094&start=570#p227647
1) O τελεστής "in" (membership operator) της python είναι
για να ελέγχει αν ένα μια μεταβλητή (η ακόμα ένα συγκεκριμένο object για την περίπτωση ελέγχου σε μια λίστα ή tuple κλπ) υπάρχει
σε μια ακολουθία (sequence )όπως strings,tuples,lists,sets
2)
το
εναποθέτει στην μεταβλητή Χ διαδοχικά τιμές από το μηδέν σημείο της sequence εώς το μήκος της ( len(sequence) )
αφού ένα προς ένα έλεγχο κάνει ηδη ο "in" operator
ο explicit έλεγχος ένα προς ένα είναι περιττός (φυσικά γίνεται και έτσι)
αν η ακολουθία σου είχε έχει 1000 αντικείμενα θα έκανε 1000000 loops !!!!
επομένως
o παρακάτω κώδικας
μπορεί να γίνει
Τέλος
στο except clause αντί για pass βάλε
return False
και βάλε το file.close() μαζί με ένα return False σε ένα finally clause
επομένως o κώδικας:
μπορεί να γίνει
viewtopic.php?f=6&t=5094&start=570#p227647
1) O τελεστής "in" (membership operator) της python είναι
για να ελέγχει αν ένα μια μεταβλητή (η ακόμα ένα συγκεκριμένο object για την περίπτωση ελέγχου σε μια λίστα ή tuple κλπ) υπάρχει
σε μια ακολουθία (sequence )όπως strings,tuples,lists,sets
2)
το
- Κώδικας: Επιλογή όλων
for Χ in sequence:
print X
εναποθέτει στην μεταβλητή Χ διαδοχικά τιμές από το μηδέν σημείο της sequence εώς το μήκος της ( len(sequence) )
αφού ένα προς ένα έλεγχο κάνει ηδη ο "in" operator
ο explicit έλεγχος ένα προς ένα είναι περιττός (φυσικά γίνεται και έτσι)
αν η ακολουθία σου είχε έχει 1000 αντικείμενα θα έκανε 1000000 loops !!!!
επομένως
o παρακάτω κώδικας
- Κώδικας: Επιλογή όλων
for i in self.folders_names:
if name in self.folders_names:
return True
....
μπορεί να γίνει
- Κώδικας: Επιλογή όλων
if name in self.folders_names:
return True
else:
return False
Τέλος
στο except clause αντί για pass βάλε
return False
και βάλε το file.close() μαζί με ένα return False σε ένα finally clause
γιατι άν δεν έχεις ονόματα των φακέλων ( folders_names )
με άλλα λόγια έχεις ανύπαρκτα folders_names
τότε το name δεν μπορεί να υπάρχει σε ανύπαρκτα folders_names ![]()
οπότε μπορείς να κάνεις έγκαιρα return False
επομένως o κώδικας:
- Κώδικας: Επιλογή όλων
try:
self.folders_names = pickle.load(f)
except (EOFError, IOError):
pass
f.close()
μπορεί να γίνει
- Κώδικας: Επιλογή όλων
try:
self.folders_names = pickle.load(f)
except (EOFError, IOError):
pass
finally:
f.close()
return False