различия между “d = dict ()” и “d = {}”

$ python2.7 -m timeit 'd={}'
10000000 loops, best of 3: 0.0331 usec per loop
$ python2.7 -m timeit 'd=dict()'
1000000 loops, best of 3: 0.19 usec per loop

Почему использование один по другому?

35
задан suci 23 March 2017 в 08:54
поделиться

4 ответа

d = dict () требует поиска в locals () , затем globals () , затем __ builtins __ , d = {} не

25
ответ дан 27 November 2019 в 06:37
поделиться

Я один из тех, кто предпочитает слова пунктуации - например, это одна из причин, по которой я предпочел Python Perl. «Жизнь лучше без фигурных скобок» (старый девиз Python, который был на футболке с изображением улыбающегося подростка ;-), в конце концов (изначально предназначался для обозначения фигурных скобок и отступов для группировки, конечно, но, эй , брекеты брекеты! -).

«Плата» за несколько наносекунд (с целью использования четких, удобочитаемых коротких слов вместо фигурных скобок, скобок и прочего) обычно доступна (это в основном стоимость поиска во встроенном пространстве имен, цена, которую вы платите каждый раз, когда вы используете встроенный тип или функцию, и вы можете слегка оптимизировать их, подняв несколько запросов из циклов).

Итак, я обычно тот, кто любит писать dict () для {} , list (L) вместо L [:] , а также list () для [], tuple () для () и т. Д. - просто общее предпочтение стиля для произносимого кода. Когда я работаю над существующей кодовой базой, использующей другой стиль, или когда мои товарищи по команде в новом проекте имеют сильные предпочтения в другом направлении, я, конечно, могу с этим согласиться (не без попытки небольшой проповеди в случае с товарищами по команде, хотя ;-).

54
ответ дан 27 November 2019 в 06:37
поделиться

Если люди используют (просто) dict () вместо (просто) {} , как правило, это потому, что они не знают о {} (что является большим подвигом) или потому, что они думают, что это яснее (что субъективно, но необычно).

Есть вещи, которые вы можете сделайте с dict , что вы не можете сделать с {} , например, передать его чему-то, что ожидает вызываемый объект, например collections.defaultdict (dict) . Также есть тот факт, что вы можете вызвать dict с аргументами ключевого слова, что некоторые люди предпочитают:

>>> dict(spam=1, ham=2)
{'ham': 2, 'spam': 1}

Лично я предпочитаю синтаксис литерала dict, потому что он работает лучше, когда вы хотите использовать ключи, которые не являются действительными идентификаторами :

>>> dict(pass=1)
 File "<stdin>", line 1
    dict(pass=1)
        ^
SyntaxError: invalid syntax
>>> dict('ham and eggs'=1)
  File "<stdin>", line 1
SyntaxError: keyword can't be an expression

(и смешивание стилей только потому, что некоторые ключи не являются действительными идентификаторами, фу)

9
ответ дан 27 November 2019 в 06:37
поделиться

Как сказал Томас, я использую dict(), чтобы можно было указать ключевые слова. Особенно если я вручную создаю большой словарь для инициализации данных или чего-то еще: возможность использовать синтаксис ключевых слов экономит мне два нажатия клавиш (и связанный с этим визуальный беспорядок) для каждого элемента.

1
ответ дан 27 November 2019 в 06:37
поделиться
Другие вопросы по тегам:

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