[TasPython] Διαλέξτε το στυλ σας

Themistoklis Savvidis themhs at gmail.com
Sat Sep 4 17:45:17 CEST 2010


2010/9/1 Dimitris Glezos <glezos at indifex.com>

> Πώς θα υλοποιούσατε την self.cycle() στη δική σας κλάση;
>
> LEVEL_VALUES = {
>    0: 'Normal',
>    1: 'High',
>    2: 'Top',
> }
>
> ### 1 -- "The One-liner Showoff"
>
> def cycle(self):
>    self.level = (self.level + 1) % max(LEVEL_VALUES.keys())
>

Μας αρέσει αυτός ο c-like τρόπος.

Παρεμπιπτόντως, σε περιπτώσεις που θέλουμε το loop μας να φτάνει σε κάποιον
σταθερό αριθμό η τιμή του οποίου δε μας ενδιαφέρει - σε αντίθεση με την τάξη
μεγέθους του - μπορούμε να διαλέγουμε (μία δύναμη του 2) μείον 1 ώστε να
αντικαταστήσουμε το υπολογιστικά ακριβό mod με ένα ταχύτατο bitwise and:

self.max_value = 255

def cycle(self):
    self.level = (self.level + 1) & self.max_value

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

-- 
Themis
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/taspython/attachments/20100904/71a325f4/attachment.html>


More information about the TasPython mailing list