Я заинтригован следующим выражением Python:
d3 = dict(d1, **d2)
Задача состоит в том, чтобы объединить 2 словаря в третий, и вышеупомянутое выражение выполняет задачу очень хорошо. Я интересуюсь ** оператор и что точно является им делающий к выражению. Я думал, что ** был оператор питания и не видел, что он использовал в контексте выше все же.
Полный отрывок кода - это:
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = dict(d1, **d2)
>>> print d3
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
**
в списках аргументов имеет особое значение, как описано в раздел 4.7 руководства . Словарь (или подобный словарю) объект, переданный с помощью ** kwargs
, раскрывается в аргументы ключевого слова вызываемого объекта, подобно тому как * args
раскрывается в отдельные позиционные аргументы.
вы получили ответ оператора **. вот еще один способ добавить словари
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3=d1.copy()
>>> d3.update(d2)
>>> d3
{'a': 1, 'c': 3, 'b': 2, 'd': 4}
В Python любая функция может принимать несколько аргументов с *;
или несколькими аргументами ключевого слова с **.
Пример принимающей стороны:
>>> def fn(**kwargs):
... for kwarg in kwargs:
... print kwarg
...
>>> fn(a=1,b=2,c=3)
a
c
b
Пример вызывающей стороны (спасибо Томасу):
>>> mydict = dict(a=1,b=2,c=3)
>>> fn(**mydict)
a
c
b
Оператор ** превращает словарь в параметры ключевых слов:
>>> d1 = {'a': 1, 'b': 2}
>>> d2 = {'c': 3, 'd': 4}
>>> d3 = dict(d1, **d2)
Становится:
>>> d3 = dict(d1, c=3, d=4)
Этот оператор используется для распаковки списка аргументов: http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists
Нет, порядок не имеет значения.
Почти все RDBMS (такие как MS Access, MySQL, SQL Server, ORACLE и т.д.) используют оптимизатор на основе затрат на основе статистики столбцов. В большинстве ситуаций оптимизатор выберет правильный план. В приведенном примере заказ не имеет значения (при условии актуализации статистики).
Чтобы решить, какую стратегию запроса использовать, оптимизатор Jet Engine использует статистика. Ниже перечислены следующие факторы: некоторые из факторов, которые они статистика основана на:
- Количество записей в таблице
- Количество страниц данных в таблице
- Расположение таблицы
- Присутствуют ли индексы
- Насколько уникальны индексы
Примечание : Вы не можете просматривать схемы оптимизации ядра базы данных Jet, и вы не может указать, как оптимизировать запрос. Тем не менее, вы можете использовать Documenter базы данных для определения присутствуют ли индексы и каким образом уникальный индекс.
На основе этих статистических данных Затем оптимизатор выбирает лучший внутренняя стратегия запроса для обработки с определенным запросом.
Статистика обновляется всякий раз, когда запрос компилируется. Запрос помечен для компиляции при сохранении любого изменения в запросе (или его базовые таблицы) и когда база данных уплотнена. Если запрос помечен для компиляции, компиляция и происходит обновление статистики при следующем выполнении запроса. Компиляция обычно занимает от одного секунды до четырех секунд.
При добавлении значительного количества записей в базе данных, необходимо открыть, а затем сохранить запросы в перекомпилировать запросы. Например, если вы проектируете, а затем тестируете запрос по используя небольшой набор образцов данных, должен перекомпилировать запрос после дополнительные записи добавляются в база данных. Когда вы это делаете, вы хотите чтобы убедиться, что оптимальный запрос производительность достигается, когда приложение используется.
Ссылка .
Может представлять интерес: ACC: как оптимизировать запросы в Microsoft Access 2,0, Microsoft Access 95 и Microsoft Access 97
Часто задаваемые вопросы по производительности Microsoft Access Тони Тьюза .
-121--1340797-Не очень много информации о фактических параметрах по умолчанию на веб-сайтах Майкрософт, однако Geoff Chappell, похоже, провел некоторые исследования по этой теме. Ссылка:
http://www.geoffchappell.com/viewer.htm?doc = studies/msvc/cl/cl/initial.htm & tx = 27
Поскольку мы все знаем, что говорится в документации и что на самом деле делает программное обеспечение, это две разные вещи.
Чтобы ответить на вопрос, вы можете увидеть, какие опции cl передаются модулям компилятора c1xx.dll и c2.dll, передав опцию/Bd в cl:
cl /Bd helloworld.cpp
Чтобы увидеть переменные среды, которые компилятор и компоновщик использует тип:
cl /Be helloworld.cpp
-121--4029008- Также стоит упомянуть механику dict В качестве первого аргумента он использует начальный словарь, а также может использовать аргументы ключевых слов, каждый из которых представляет новый член, добавляемый в создаваемый словарь.