Каково различие между “2*2” и “2 ** 2” в Python?

Я хотел бы добавить, что способность dotTrace различать память и сеансы трассировки производительности абсолютно неоценима (ANTS также может иметь функцию различий в памяти, но я не видел различий в производительности).

Будучи в состоянии запустить сеанс профилирования до и после исправления ошибки или улучшения, сравните результаты невероятно ценно, особенно с гигантским унаследованным приложением .NET (как в моем случае), где производительность никогда не была приоритетом и где поиск узкие места могут быть ОЧЕНЬ утомительными. Выполнение различий до и после позволяет увидеть изменение количества вызовов для каждого метода и изменение продолжительности для каждого метода .

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

Итог: dotTrace отлично работает, и diff бесценен.

50
задан gsamaras 21 June 2016 в 10:44
поделиться

8 ответов

Попробуйте:

2**3*2

и

2*3*2

, чтобы увидеть разницу.

** - оператор для "степени". В вашей конкретной операции 2 в степени 2 дает то же, что и 2, умноженные на 2.

121
ответ дан 7 November 2019 в 10:28
поделиться

Чтобы конкретно ответить на ваш вопрос Почему используется code1, если мы можем использовать code2? Я могу предположить, что программист думал в более широком математическом смысле. В частности, возможно, более широкое уравнение - это уравнение мощности, и тот факт, что оба первых числа равны «2», является скорее совпадением, чем математической реальностью. Я хотел бы убедиться, что более широкий контекст кода поддерживает его значение

var = x * x * y
во всех случаях, а не только в этом конкретном случае. Это может доставить вам большие неприятности, если x не равно 2.
4
ответ дан 7 November 2019 в 10:28
поделиться
  2**2 means 2 squared (2^2)
  2*2 mean 2 times 2 (2x2)

В этом случае они имеют одно и то же значение, но ...

  3**3*4 != 3*3*4
14
ответ дан 7 November 2019 в 10:28
поделиться

Двойные звезды ( ** ) - это возведение в степень. Итак, «2 умножить на 2» и «2 в степени 2» - это одно и то же. Измените числа, и вы увидите разницу.

33
ответ дан 7 November 2019 в 10:28
поделиться

Оператор ** в Python на самом деле является «силой»; то есть 2 ** 3 = 8 .

2
ответ дан 7 November 2019 в 10:28
поделиться

Верхний оператор является «степенным» оператором, поэтому в В данном случае это то же самое, что 2 * 2, равно 2 в степени 2. Если вы поставите 3 в среднее положение, вы увидите разницу.

1
ответ дан 7 November 2019 в 10:28
поделиться

Двойная звездочка означает степень. Одна звездочка означает умножение на. 2 2 совпадает с 2x2, поэтому в обоих ответах получилось 4.

1
ответ дан 7 November 2019 в 10:28
поделиться

2 ** 2 = 2, степень 2

2 * 2 = 2 раза 2

2
ответ дан 7 November 2019 в 10:28
поделиться
Другие вопросы по тегам:

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