2015-09-15 1 views
1

Я написал эту функцию в своем пакете.«Неожиданное» TypeError: неожиданное ключевое слово

def partitionIntoDays(ls, number, lookupKey=None): 
    ''' Partitions the location measurements into days. 
    @ls: The list of measurements you want to partition 
    @return: A dictionary in the format {'Number of partition': 
    'List of measurements'}''' 
    if len(ls) == 0: 
     return {0: []} 
    firstMidnight = TimeAux.localTimeToEpoch(Delorean(TimeAux.epochToLocalTime(ls[0].time, TIMEZONE)).midnight()) 
    return splitByTimedelta(ls, delta=number*24*3600, lowerBound=firstMidnight, lookupKey=lookupKey) 

Но всякий раз, когда я пытаюсь вызвать функцию из скрипта, я получаю следующее сообщение об ошибке:

TypeError: partitionIntoDays() got an unexpected keyword argument 'lookupKey' 

Однако, если я импортировать функцию где-то вручную, я могу проверить, что функция имеет аргумент. Например, я могу даже сделать это, пока я отлаживаю вышеуказанную ошибку в pdb.

import geogps.Partition as pt 
pt.partitionIntoDays.func_code.co_varnames 
>>>>('ls', 'number', 'lookupKey', 'firstMidnight') 

Также приведенный выше код отлично работает в Python 3.4. Я вкратце полностью ошеломлен.

+2

делает 'splitByTimedelta' аргумент, называемый' lookupKey'? –

+0

Как вы вызываете функцию partitionIntoDays в своем скрипте? – levi

+0

'co_varnames' - это список переменных, используемых * в теле функции *. Более важным является 'co_argcount', который сообщает вам, сколько из этих имен являются аргументами. –

ответ

1

Итак, я понял: пока не было никаких затяжных файлов pyc, моя структура пакета была испорчена, и у меня был посторонний файл во вложенной папке. Спасибо @ bruno-desthuilliers за то, что указали мне правильный путь.