2017-02-13 15 views
0

Я новичок в Python и немного запутанного о передаче параметров: У меня есть 2 метода:parameteres передачи в питона

def convert(self, ipnb, indices = []): 
    with self.fopen(ipnb, u'r') as f: 
     emptyIndicesList = not indices 
     #some code 

def test_read(self): 
    s = self.convert(self, u'test.ipynb') 
    #some code 

я сталкиваюсь 2 вопроса:

  1. Если я запускаю код как self.fopen(ipnb, u'r') as f бросает ... Но если я изменю with self.fopen(ipnb, u'r') as f к self.fopen(u'test.ipynb', u'r') as f он работает правильно

  2. emptyIndicesListfalse, я ожидаю, что это будет true, так как я думаю, что использую параметр по умолчанию - пустой список Что мне не хватает в передаче параметров? Как должны быть решены вышеуказанные проблемы?

Спасибо :)

ответ

1

Вы проезжаете контекст в качестве первого аргумента функции преобразование.

Изменить s = self.convert(self, u'test.ipynb') на s = self.convert(u'test.ipynb'), который разрешит обе ваши проблемы.