ZetCode

Python complex 函数

上次修改时间:2025 年 4 月 11 日

本综合指南探讨 Python 的 complex 函数,该函数用于创建复数。我们将介绍创建方法、运算、转换以及复数使用的实际示例。

基本定义

complex 函数从实部和虚部创建一个复数。复数的格式为 a + bj,其中 a 是实部,b 是虚部。

主要特点:接受整数、浮点数、字符串或两个数字。 返回一个不可变的复数对象。 支持所有算术运算和特殊方法。

创建复数

这是一个基本用法,展示了使用 complex 函数创建复数的不同方法。

basic_complex.py
# From two numbers
c1 = complex(3, 4)  # 3 + 4j
print(c1)

# From a string
c2 = complex("5+6j") # 5 + 6j
print(c2)

# With one argument (imaginary part 0)
c3 = complex(7)      # 7 + 0j
print(c3)

# From another complex number
c4 = complex(c1)     # 3 + 4j
print(c4)

此示例展示了创建复数的四种主要方法。 最常见的是传递两个数字(实部和虚部)。

字符串格式不能包含空格,并且虚部使用“j”。 单个参数创建一个虚部为 0 的复数。

复数运算

复数支持标准算术运算。 此示例演示了复数的基本运算。

operations.py
a = complex(2, 3)
b = complex(4, 5)

# Addition
print(a + b)  # (6+8j)

# Subtraction
print(a - b)  # (-2-2j)

# Multiplication
print(a * b)  # (-7+22j)

# Division
print(a / b)  # (0.5609756097560976+0.0487804878048781j)

# Conjugate
print(a.conjugate())  # (2-3j)

复数遵循标准的数学运算规则。 加法和减法按分量进行。 乘法使用分配律。

除法更复杂,需要乘以共轭复数。 conjugate 方法反转虚部的符号。

访问实部和虚部以及转换

此示例演示如何访问实部和虚部以及在类型之间进行转换。

parts_conversion.py
c = complex(3.5, 4.2)

# Access parts
print(c.real)   # 3.5
print(c.imag)   # 4.2

# Convert to string
s = str(c)      # '(3.5+4.2j)'
print(s)

# Convert from string
c2 = complex(s)
print(c2)       # (3.5+4.2j)

# Absolute value (magnitude)
print(abs(c))   # 5.4644304369257

real属性访问各个分量。 str 函数转换为字符串表示形式,可以将其解析回复数。

abs 函数返回大小(√(real² + imag²))。 这对于许多数学应用很有用。

实际应用:旋转

复数可以表示 2D 空间中的旋转。 此示例演示通过乘以单位复数来旋转一个点。

rotation.py
import math

def rotate_point(point, angle_degrees):
    # Convert angle to radians
    angle = math.radians(angle_degrees)
    # Create rotation complex number
    rotation = complex(math.cos(angle), math.sin(angle))
    # Convert point to complex
    point_complex = complex(*point)
    # Apply rotation
    rotated = point_complex * rotation
    return (rotated.real, rotated.imag)

original = (3, 4)
rotated = rotate_point(original, 90)
print(f"Original: {original}")
print(f"Rotated 90°: {rotated}")

这演示了复数乘法如何执行旋转。 旋转复数的大小为 1(单位圆),角度为 θ。

结果显示点 (3,4) 逆时针旋转 90 度,大约应为 (-4,3)。

错误处理

complex 函数对无效输入引发 ValueError 异常。 此示例展示了正确的错误处理。

errors.py
try:
    c = complex("3 + 4 i")  # Spaces and wrong imaginary symbol
except ValueError as e:
    print(f"Error: {e}")

try:
    c = complex("abc")      # Non-numeric string
except ValueError as e:
    print(f"Error: {e}")

try:
    c = complex(3, "4")    # Non-numeric argument
except TypeError as e:
    print(f"Error: {e}")

这些示例演示了 complex 对无效输入的行为。 字符串解析对格式要求严格。 参数必须是数字。

对于健壮的代码,请在转换之前验证输入或适当地处理这些异常。

最佳实践

资料来源

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已经撰写了超过 1,400 篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 Python 教程