Python Glossary English

все Python 3cmathфункция

cmath.sqrt()

степени и логарифмы

Квадратный корень для комплексных чисел: в отличие от math.sqrt, корень из отрицательного числа не падает, а даёт мнимое число.

Синтаксис

cmath.sqrt(z)

math.sqrt(-1) бросает ValueError, а cmath.sqrt(-1) возвращает 1j. Цена — результат всегда complex, даже для 4: получится (2+0j), а не 2.0, и такое число нельзя сравнивать через < или передать в range. Нужен вещественный корень — берите math.sqrt; комплексный ответ — только там, где он действительно ожидается (корни квадратного уравнения с отрицательным дискриминантом). Знак нуля в мнимой части выбирает ветвь: sqrt(complex(-4, -0.0)) даёт -2j.

Примеры

import cmath
import math
print(cmath.sqrt(-1))  # → 1j
print(cmath.sqrt(4))  # → (2+0j) — всегда complex
try:
    math.sqrt(-1)
except ValueError as e:
    print(type(e).__name__)  # → ValueError
import cmath
a, b, c = 1, 2, 5
d = cmath.sqrt(b * b - 4 * a * c)
print((-b + d) / (2 * a), (-b - d) / (2 * a))  # → (-1+2j) (-1-2j)
import cmath
print(cmath.sqrt(complex(-4, 0.0)), cmath.sqrt(complex(-4, -0.0)))  # → 2j -2j

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности