Я наивна для Python. Но я узнал, что оба они используются для сериализации и десериализации. Итак, я просто хочу знать, что все основные различия между ними?В чем основное отличие между соленой и ямлом в Python?
ответ
YAML - это нейтральный по языку формат, который может представлять примитивные типы (int, string и т. Д.) И хорошо переносится между языками. Вид аналогичен JSON, XML или текстовому файлу; просто с некоторыми полезными соглашениями о форматировании, на самом деле, YAML является надмножеством JSON.
Формат Pickle специфичен для Python и может представлять собой широкий спектр структур данных и объектов, например. Списки, наборы и словари Python; экземпляры классов Python; и комбинации этих подобных списков объектов; объекты, содержащие списки, содержащие списки; и т.д.
Так в основном:
- YAML представляет простые типы данных & структур в языке переносного образом
- рассола может представлять сложные структуры, но в неязыковом переносной образом
Существует больше, чем это, но вы попросили «базовую» разницу.
pickle это специальный Python формат сериализации когда объект Python преобразуется в поток байтов и обратно:
«Травление» представляет собой процесс, посредством которого объект иерархии Питон преобразуются в поток байтов , а «unpickling» - это обратная операция , в результате которой поток байтов преобразуется обратно в объект .
Главное, что это специфический python.
С другой стороны, YAML является language-agnostic и удобным для чтения формате сериализации.
FYI, если вы выбираете между этими форматами, подумайте:
- сериализации/скорость derialization (см cPickle модуль)
- вам нужно хранить файлы сериализованные в читабельной форме?
- что вы собираетесь сериализовать? Например, если это сложная структура данных на основе python, тогда вы должны пойти с рассолом.
Смотрите также:
Итак, мне нужно кэшировать некоторые статистические данные, которые будут использоваться другими программами для манипулирования статистикой и не будут касаться удобочитаемости человека. – nirprat
@nirprat, если эти сериализованные статистические данные будут использоваться программами, отличными от python, тогда «pickle» - это не путь: выберите между языковыми агностическими форматами: 'YAML',' JSON', 'XML',' CSV' и т. Д. посмотрите на модули 'ujson' и' simplejson' - они довольно быстры по сравнению с модулем 'json'. – alecxe
- 1. В чем основное отличие между следующими утверждениями?
- 2. В чем основное отличие между stdlib.h и cstdlib в C++?
- 3. В чем основное отличие между пучками и bundleSFX в jspm?
- 4. В чем основное отличие между «union» и «struct» в C.?
- 5. В чем основное отличие thread.join vs. queue.join?
- 6. В чем основное отличие ReactiveCocoa и PromiseKit?
- 7. В чем основное отличие Admob и AdSense
- 8. В чем основное отличие между ContainerControlledLifetimeManager и HierarchicalLifetimeManager?
- 9. В чем основное отличие между службами Spring и Rest
- 10. В чем основное отличие между Amazon S3 и Amazon EBS
- 11. В чем основное отличие между ReadOnly и Enabled?
- 12. В чем основное отличие между драйверами и пользовательскими приложениями?
- 13. В чем основное отличие между операторами if и if?
- 14. В чем основное отличие между B-Rep и параметрическим представлением
- 15. В чем основное отличие между ToString() и Convert.ToString()?
- 16. В чем основное отличие между «if» и «else if»? .
- 17. В чем основное отличие между неявным и явным анализом случаев?
- 18. В чем основное отличие между стандартами сжатия JPEG и EZW?
- 19. В чем основное отличие между протоколом WebSocket и http?
- 20. В чем основное отличие между signcode.exe и signtool.exe?
- 21. В чем основное отличие между статическим классом и классом Singleton
- 22. В чем основное отличие между пакетом android.animation и android.transition?
- 23. В чем основное отличие между обработчиком и событием?
- 24. В чем основное отличие между огурцом и дозой?
- 25. В чем основное отличие между C++ и C++ .NET?
- 26. В чем основное отличие между MDM и ESB?
- 27. В чем основное отличие между AsyncTask() и Handler()?
- 28. В чем основное отличие между $ .ajax и $ .post?
- 29. В чем основное отличие между списком кортежей и словарем?
- 30. В чем основное отличие этих двух идентификаторов?
Спасибо и, пожалуйста, не стесняйтесь обращаться более подробную информацию о маринаде и YAML. Например, по каким параметрам мы должны выбрать один из них для сериализации данных и всех (помимо этой языковой переносимости)? – nirprat
@nirprat - это скорость сериализации/десериализации? Что относительно читаемости, вам нужно хранить эти сериализованные файлы в форме, удобной для человека? – alecxe
Структура YAML следует концепции Python отступов; каждый уровень представлен отступом, а маркер закрытия не существует. Сравните с XML, где начинается блок с '', вы должны завершить тот же блок с' '. По этой причине YAML несколько проще копировать, вырезать и вставлять, чем XML или JSON. Самое простое правило: если вы используете только примитивные типы данных, выберите YAML (или JSON), потому что они доступны для чтения, редактирования и переносимости; но если вы используете непримитивные типы данных (например, объекты Python), тогда вы должны использовать Pickle. –