👍1👎1
Самый доступное объяснение этой концепции можно посмотреть на
👍1👎1
🧩 Что делает pd.options.mode.copy_on_write?
Anonymous Quiz
19%
Добавляет приставку df_ к названиям столбцов копии df
67%
Откладывает копирование датафрейма до изменения
4%
Отключает все проверки типов данных
10%
Такого в Pandas нет
👍1👎1
«В зависимости от результата операции мутация одного объекта может случайно привести к мутации другого:
df = pd.DataFrame({"foo": [1, 2, 3], "bar": [4, 5, 6]})
subset = df["foo"]
subset.iloc[0] = 100
df
В консоль выведется:
foo bar
0 100 4
1 2 5
2 3 6
Изменение подмножества, например, обновление его значений, также приводит к обновлению df. Точное поведение сложно предсказать. Copy-on-Write решает проблему случайного изменения более одного объекта, явно запрещая это. При включённом CoW df не изменяется».
Режим copy_on_write означает "копирование при записи". Это оптимизация, которая позволяет pandas не создавать копии данных сразу при создании view или slice, а только тогда, когда данные действительно изменяются. Это значительно экономит память, особенно при работе с большими наборами данных и цепочками операций. Это дефолтное поведение для Pandas версии 3.0+.
👍2👎1
«Код вызовет ошибку:
TypeError: __init__() takes 2 positional arguments but 3 were given
Ошибка типа: __init__() принимает 2 позиционных аргумента, но было предоставлено 3.
Проблема связана с тем, что вызов super в Chef не обращается к своему суперклассу Employee, но взамен делает обращение к родственному классу того же уровня и следующему в MRO, т.е. Server. Поскольку конструктор родственного класса имеет список аргументов, отличающийся от списка аргументов в конструкторе настоящего суперкласса, который ожидает только self и name, код перестает работать».
😱1