Меня смущает то, как должно происходить казнь. Я не понимаю, почему код не выполняется. я использую полкуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Меня смущает то, как должно происходить казнь. Я не понимаю, почему код не выполняется. я использую полку

Сообщение Anonymous »

Это сегмент кода, который начинается со строки 261 в моем файле.

Код: Выделить всё

if __name__ == '__main__':
# main()
print('Checkpoint 0')
createShelve()
print('Checkpoint 1')
data = loadShelve()
print('Checkpoint 2')
for key in data.keys():
print(key)
во время отладки я добавил в createShelve несколько операторов печати, и это выглядит именно так:

Код: Выделить всё

  def createShelve():
global SHELVE_FILE
filenames = getFilenames()
data = {}
print('Empty Data Now')
for filename in filenames:
build_data(filename, data=data)
print('loaded file {}'.format(filename))
print('Loading with {} keys'.format(len(data.keys())))

recursionLimit = sys.getrecursionlimit()
sys.setrecursionlimit(12657)  # used manual binary search to compute this
print('Checkpoint A')
try:
print('Checkpoint B')
with shelve.open(SHELVE_FILE) as result:
result.update(data)
print('File now contains data with {} keys'.format(len(data.keys())))
except RecursionError:
print('****Maximum recursion limit reached****')
for ext in ('.bak', '.dat', '.dir'):
print('Deleting {}'.format(filename + ext))
os.unlink(filename + ext)
print('Checkpoint C')
sys.setrecursionlimit(recursionLimit)
print('Checkpoint D')
Указывая непосредственно на проблему, у меня есть 4 основных оператора печати в контрольных точках A, B, C и D. Печатаются только A и B, и я до сих пор не могу придумать причину, по которой элемент управления выполнением пропустит эти строки. Также для числовых контрольных точек на уровне модуля достигается только «Контрольная точка 0».
Какие усилия я приложил? Единственный элемент этого кода, который я раньше не использовал, — это функции установки предела рекурсии. Я не знаю, могут ли они иметь какой-то эффект, вызывающий это. Я проверил руководство Python и не вижу ничего, что могло бы вызвать какой-либо эффект. Если вы заметили, что напечатанные контрольные точки указывают на то, что был выполнен только один из вызовов setrecursionlimit.

Подробнее здесь: https://stackoverflow.com/questions/789 ... ot-underst
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»