36

Вопрос по operators, native, math, python – Что означают эти операторы (**, ^,%, //)? [закрыто]

Кроме стандартных,+-*а также/ операторы; но что это значит (,,**^%//)

>>> 9+float(2) # addition
11.0
>>> 9-float(2) # subtraction
7.0
>>> 9*float(2) # multiplication
18.0
>>> 9/float(2) # division
4.5
>>>
>>> 9**float(2) # This looks like a square, (i.e. power 2) 
81.0
>>> 9**float(3) # So ** is equivalent to `math.pow(x,p)` ?
729.0

Как насчет^ оператор?

>>> 9^int(2) # What is `^` in `x^u` , it only allows `int` for `u`
11
>>> 9^int(3)
10
>>> 9^int(4)
13
>>> 9^int(5)
12
>>> 9^int(6)
15
>>> 9^int(7)
14
>>> 9^int(8)
1
>>> 9^int(9)
0
>>> 9^int(10)
3
>>> 9^int(11)
2
>>> 9^int(12)
5

% вx%m возвращает нормальный модуль остатка, но только еслиm < x, Почему это так? Что значит% делать?

>>> 9%float(2)
1.0
>>> 9%float(3)
0.0
>>> 9%float(4)
1.0
>>> 9%float(5)
4.0
>>> 9%float(6)
3.0
>>> 9%float(7)
2.0
>>> 9%float(8)
1.0
>>> 9%float(9)
0.0
>>> 9%float(10)
9.0
>>> 9%float(11)
9.0
>>> 9%float(12)
9.0

Как насчет// оператор? Что это делает?

>>> 9//float(2)
4.0
>>> 9//float(3)
3.0
>>> 9//float(4)
2.0
>>> 9//float(5)
1.0
>>> 9//float(6)
1.0
>>> 9//float(7)
1.0
>>> 9//float(8)
1.0
>>> 9//float(9)
1.0
>>> 9//float(1)
9.0
>>> 9//float(0.5)
18.0

<span>Если у вас есть конкретный вопрос относительно документации, на которую вы ссылаетесь, укажите, что вы нене понимаю и не спрашиваю об этом.</span>

Mar 04, 2013, 10:27 AMотphant0m

<span>Если вы Googleоператоры питона &quot; Самая первая ссылка - хороший список операторов.</span>

Mar 04, 2013, 3:14 AMотHot Licks

<span>Я чувствую, что вы ответили на свой вопрос.</span>

Mar 04, 2013, 3:02 AMотsquiguy

3ответа

21

Вы можете найти все эти операторы вСправочник по языку Pythonхоть тыПридется немного прокрутить, чтобы найти их всех. Как сказали другие ответы:

  • ** Оператор делает возведение в степень.a ** b являетсяa поднят кb мощность. Такой же** Символ также используется в нотации аргумента функции и вызова с другим значением (передача и получение произвольных аргументов ключевого слова).
  • ^ Оператор делает двоичный xor.a ^ b вернет значение только с битами, установленными вa или вb но не оба. Это просто!
  • % Оператор в основном, чтобы найти модуль двух целых чисел.a % b возвращает остаток после деленияa отb, В отличие от операторов модулей в некоторых других языках программирования (таких как C), в Python модуль будет иметь тот же знак, что иbвместо того же знака, что иa, Этот же оператор также используется длястарый» стиль форматирования строки, такa % b может вернуть строку, еслиa это строка формата иb это значение (или кортеж значений), которое может быть вставлено в.a
  • // оператор делает Pythonверсия целочисленного деления. Python»s целочисленное деление не совсем то же самое, что и целочисленное деление, предлагаемое некоторыми другими языками (например, C), так как оно округляется к отрицательной бесконечности, а не к нулю. Вместе с оператором модуля, вы можете сказать, чтоa == (a // b)*b + (a % b), В Python 2 разделение по полу - это поведение по умолчанию, когда вы делите два целых числа (используя обычный оператор деления/). Поскольку это может быть неожиданным (особенно когда выне привередливы в том, какие типы чисел вы получаете в качестве аргументов функции), Python 3 был изменен, чтобы сделать "правда" (с плавающей точкой) деление норма для деления, которое было бы округлено в противном случае, и это будет делать "этаж" деление только по явному запросу. (Вы также можете получить новое поведение в Python 2, поставивfrom __future__ import division в верхней части ваших файлов. Я настоятельно рекомендую это!)
3

Вы правы в том, что** является степенной функцией.

^ поразрядно XOR.

% действительно операция модуля, но обратите внимание, что для положительных чисел,x % m = x всякий раз, когдаm > x, Это следует из определения модуля. (Кроме того, Python указываетx % m иметь знакm.)

// является операцией деления, которая возвращает целое число, отбрасывая остаток. Это стандартная форма деления с использованием/ в большинстве языков программирования. Тем не менее, Python 3 изменил поведение/ выполнить деление с плавающей точкойдаже если аргументы целые числа,// Оператор был представлен в Python 2.6 и Python 3, чтобы обеспечить оператор целочисленного деления, который будет вести себя согласованно между Python 2 и Python 3. Это означает:

| context                                | `/` behavior   | `//` behavior |
---------------------------------------------------------------------------
| floating-point arguments, Python 2 & 3 | float division | int divison   |
---------------------------------------------------------------------------
| integer arguments, python 2            | int division   | int division  |
---------------------------------------------------------------------------
| integer arguments, python 3            | float division | int division  |

Для более подробной информации смотрите этот вопрос:Деление на Python 2.7. и 3.3

80

  • **: возведение в степень
  • ^: исключающее-или (побитовое)
  • %: модуль
  • //: разделить с целым результатом (отбросить остаток)

RelatedQuestions