Большинство дистрибутивов Linux поставляются с предустановленным Python. Использование Docker здесь добавляет значительную сложность, и я бы настоятельно рекомендовал Docker не запускать простой скрипт. Вы можете использовать виртуальную среду , чтобы изолировать зависимости конкретного пакета Python от остальной системы.
(Существует довольно непротиворечивый поток вопросов SO о получении прав файловой системы и идентификаторов пользователей для сценариев, которые в основном хотят взаимодействовать с хост-системой. Также помните, что при выполнении docker
все подразумевает права, эквивалентные корневым. вам не нужна файловая система Docker и изоляция пространства имен пользователя, IMHO, проще просто не использовать Docker там, где это не имеет смысла.)
Другим отличием, на которое следует обратить внимание, является обработка значений undefined
:
mergeInto = { a: 1}
toMerge = {a : undefined, b:undefined}
lodash.extend({}, mergeInto, toMerge) // => {a: undefined, b:undefined}
lodash.merge({}, mergeInto, toMerge) // => {a: 1, b:undefined}
Таким образом, merge
не объединит значения undefined
в определенные значения.
Также было бы полезно рассмотреть то, что они делают с семантической точки зрения:
will assign the values of the properties of its second parameter and so on,
as properties with the same name of the first parameter. (shallow copy & override)
merge is like assign but does not assign objects but replicates them instead.
(deep copy)
provides default values for missing values.
so will assign only values for keys that do not exist yet in the source.
works like _defaults but like merge will not simply copy objects
and will use recursion instead.
Я считаю, что научиться думать об этих методах с семантической точки зрения позволит вам лучше «угадать», что будет поведение для всех различных сценариев существующих и несуществующих ценностей.