@Maximka123

Почему не работает код в таком виде?

Добрый день! Я не так давно начал изучать Python.

После работы по часу два уделяю этому дело.
В связи с этим как я понимаю у меня фундаментальные пробелы.

В данный момент я решил пойти самым простым способом изучения. Учить на реальной задаче.

На работе много Excel документов и я хочу научиться вытаскивать данные с помощью Python из них. Нашел библиотеку xlwt, xlrd вот с ними и колдую. Но не понимаю почему мой код не выводит данные ячейки. Вернее он их выводит но... в таком вот виде
import xlrd

# Передаем файл Эксель в Питоне
book1 = xlrd.open_workbook('/Users/admin/Desktop/WorkExcel/Naselenie.xlsx')

# Открываем первый лист в Эксель
sheet1 = book1.sheet_by_index(0)

# Пробуем тестово получить данные из первой ячейки и строки
sheet1.cell_value(0,0)
print(sheet1)

Результат: - то есть все работает но ссылается на адрес в памяти как я понимаю.
Как исправить данную ситуацию я нашел. Я просто создал новую переменную и в нее передал значения.
import xlrd

# Передаем файл Эксель в Питоне
book1 = xlrd.open_workbook('/Users/admin/Desktop/WorkExcel/Naselenie.xlsx')

# Открываем первый лист в Эксель
sheet1 = book1.sheet_by_index(0)

# Пробуем тестово получить данные из первой ячейки и строки
rb = sheet1.cell_value(0,0)
print(rb)

Результат верный! Но уважаемое сообщество, подскажите почему мне необходимо передавать данные в переменную в некоторых случаях а в некоторых подобных нет.
Я не могу понять когда надо это делать а когда нет!
Всем огромное спасибо!
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ariezzz_python
Чтобы ответить на этот вопрос надо объяснить всю концепцию ООП
Советую почитать про ООП в Python

по факту sheet1.cell_value(0,0) - это функция которая которая возвращает значение, а так как это значение не ссылается ни на одну из "переменных" то она сразу удаляется сборщиком мусора
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы