Какова причина того, чтобы иметь '//' в Python? [дубликат]

Не забывайте AvalonDock относительно GitHub (часть Инструментария WPF). Я видел, что это упомянуло в других местах.

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

у Кого-либо есть какая-либо обратная связь/комментарии AvalonDock?

381
задан Jeremy Banks 10 October 2011 в 06:30
поделиться

3 ответа

В Python 3 они сделали оператор / делением с плавающей запятой и добавили оператор // для целочисленного деления (т. Е. частное без остатка); тогда как в Python 2 оператор / был просто целочисленным делением, если только один из операндов уже не был числом с плавающей запятой.

В Python 2.X:

>>> 10/3
3
>>> # to get a floating point number from integer division:
>>> 10.0/3
3.3333333333333335
>>> float(10)/3
3.3333333333333335

В Python 3:

>>> 10/3
3.3333333333333335
>>> 10//3
3

Для получения дополнительной информации см. PEP238 .

473
ответ дан 22 November 2019 в 23:55
поделиться

// безусловно "разделение полов", например:

>>> 4.0//1.5
2.0

Как видите, хотя оба операнда являются float s, // все еще этажи - так что вы всегда надежно знать, что он будет делать.

Single / может или не может быть перекрытым, в зависимости от выпуска Python, будущего импорта и даже флагов, на которых запускается Python, например ...:

$ python2.6 -Qold -c 'print 2/3'
0
$ python2.6 -Qnew -c 'print 2/3'
0.666666666667

Как видите, одиночный / может возвращать значение с плавающей запятой, или он может возвращать значение с плавающей запятой, основываясь на полностью нелокальных проблемах, вплоть до значения включительно -Q flag ...; -).

Итак, если и когда вы знаете , что хотите настил, всегда используйте // , что гарантирует это. Если и когда вы знаете, что не хотите настил, установите float () вокруг другого операнда и используйте / . Любая другая комбинация, и вы зависите от версии, импорта и флагов! -)

если и когда вы знаете , что хотите настил, всегда используйте // , что гарантирует это. Если и когда вы знаете, что не хотите настил, установите float () вокруг другого операнда и используйте / . Любая другая комбинация, и вы зависите от версии, импорта и флагов! -)

если и когда вы знаете , что хотите настил, всегда используйте // , что гарантирует это. Если и когда вы знаете, что не хотите настил, установите float () вокруг другого операнда и используйте / . Любая другая комбинация, и вы зависите от версии, импорта и флагов! -)

159
ответ дан 22 November 2019 в 23:55
поделиться

Чтобы дополнить ответ Алекса, я бы добавил, что начиная с Python 2.2.0a2, из отдела импорта __future__ - удобная альтернатива использованию большого количества float (…) /… . Все деления выполняют float деления, кроме тех, у которых есть // . Это работает со всеми версиями, начиная с 2.2.0a2.

21
ответ дан 22 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

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