2010-03-19 3 views
1

Я пытаюсь принять некоторые рекомендации по эффективному использованию кода Python. Я слышал, что доступ к переменной-члену внутри цикла может привести к поиску словаря для каждой итерации цикла, поэтому я кэширую их в локальных переменных для использования внутри цикла.Неэффективно ли получить доступ к контейнеру-члену класса python в инструкции цикла?

Мой вопрос об утверждении петлевой самой ... если у меня есть следующий класс:

class A(object): 
    def __init__(self) 
     self.myList = [ 'a','b','c', 'd', 'e' ] 

следующий код в функции члена несут ли один, или один-в-петлю-итерации (5) поиск в словаре?

for letter in self.myList: 
    print letter 

IE, я должен принять следующий образец, если я обеспокоен эффективностью ...

localList = self.myList 
for letter in localList: 
    print letter 

или в том, что на самом деле менее эффективным из-за локальной переменной присвоить?

Примечание. Я знаю, что ранняя оптимизация - опасная ошибка, если меня беспокоит общая эффективность разработки кода. Здесь я специально спрашиваю об эффективности кода, а не о кодировании.

+0

Thanks Ignacio! – Dave

ответ

6

Итератор создан с self.myList и используется итератор. Никаких других дополнительных запросов не делается на self для итерации.