@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)

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

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

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

Войти через центр авторизации
Похожие вопросы