//
- безусловно, разделение полов, например:
>>> 4.0//1.5
2.0
Как видите, даже несмотря на то, что оба операнда float
s, //
все еще этажи - так что вы всегда надежно знаете, что он собирается делать.
Одиночный /
может или не может быть перекрытым, в зависимости от выпуска Python, будущего импорта и даже флагов, на которых запускается Python, например:
$ python2.6 -Qold -c 'print 2/3'
0
$ python2.6 -Qnew -c 'print 2/3'
0.666666666667
Как видите, single /
может возвращать значение с плавающей запятой, или оно может возвращать значение с плавающей запятой, исходя из совершенно нелокальных проблем, вплоть до значения флага -Q
... ;-).
Итак, если и когда вы знаете, что хотите пол, всегда используйте //
, который гарантирует это. Если и когда вы знаете, что не хотите пол, поставьте float()
вокруг другого операнда и используйте /
. Любая другая комбинация, и вы зависите от версии, импорта и флагов! -)
person
Alex Martelli
schedule
08.10.2009